RAD서버 RAD 서버에 Swagger UI 임베이딩

2020.03.09 13:04

김원경 조회 수:1965

Stephen Ball 블로그 글 중에 REST API 클라이언트 개발에 큰 도움이 될만한 글이라 생각되어 번역해보았습니다.

 

·         원문 링크 : https://delphiaball.co.uk/2019/12/03/embedding-swagger-ui-into-rad-server/

 

이 글은 ‘REST 서버와 클라이언트 개발하기’의 첫 번째 편입니다.  RAD 서버와 함께 사용되는 Swagger UI를 보여주기 위해 작성된 이전 글에 대한 업데이트이며 RAD 서버의 새로운 기능을 다룹니다.

 

다음 글에서는 코드를 직접 사용하지 않고 TEMSDataSetResource 컴포넌트를 사용하여 RAD 서버의 마스터-디테일 데이터를 구현하는 방법에 대해서 다루도록 하겠습니다.  세번째 편에서는 델파이로 멀티 플랫폼 클라이언트를 작성해 보기로 하겠습니다.

 

RAD 서버에 Swagger UI  임베이딩

 

왜 Swagger UI를 RAD 서버에 포함해야합니까?

 

Swagger UI는 REST API로 작업하고  문서를 확인하기 위한 훌륭한 옵션입니다. 개발시 항상 해결 해야하는 문제 중 하나는

CORS (Cross Origin Resource Sharing)였습니다. *CORS(Cross-Origin Resource Sharing)은 말 그대로 다른 서버의 리소스를 사용할 수 있는 것을 의미합니다.

 

현재 이 문제를 햬결하기 위한  몇 가지 옵션이 있습니다. 브라우저 플러그인을 사용하여 이 문제를 해결하거나 (이전글 참조) [Server.APICrossDomain]의 emsserver.ini에서 CORS를 활성화하거나 swagger-ui를 RAD 서버 인스턴스에 포함시킬 수 있습니다.

 

이 비디오에서는 후자의 옵션을 다룹니다. 문서를 시작하고 실행하는 방법을 볼 수 있습니다. 비디오는 RAD 서버를 통해 외부 리소스를 공유하도록 EMSServer.ini를 구성하고 다운로드 한 파일을 수정하여 RAD 서버에서 직접 API 문서를 자동으로 로드하는 방법을 보여줍니다.

 

 

Youtube에서 바로보기: https://youtu.be/RyX3mJnt9xc

 

RAD 서버의 웹 파일 EMSServer.ini

이 작업의 핵심은 10.3.2에서 RAD Studio에 추가 된 WebFiles 옵션입니다. RAD Studio 아키텍트 버전에서 웹 클라이언트 개발을 위해 웹 컨텐츠를 제공하고 ExtJS를 지원하기 위한 주 목적으로 추가되었지만  다른 컨텐츠를 공유 할 수 있는 또 다른 이점도 있습니다.

 

경로를 사용하려면 emsserver.ini (기본 경로 C : \ Users \ Public \ Documents \ Embarcadero \ EMS \ emsserver.ini)를 편집해야합니다. 경로를 수정한 다음 [Server.PublicPaths]에 원하는 수의 엔드 포인트를 설정합니다.

 

엔드 포인트는 임의 이름 값으로 JSON 구조로 설정됩니다. 예 

Path3={"path": "swagger-ui", "directory": "Z:\\Source\\git\\swagger-ui\\dist\\", "default": "index.html", "extensions": ["css", "html", "js", "map", "png"], "charset": "utf-8"}

 

저의 개인 취향은 Windows VM과 공유되는 Macbook의 공유 폴더를 사용합니다.  단지 웹 파일(emsserver.ini)을 계속 업데이트 할 수 있는 폴더가 있다는 것을 의미합니다.

 

RAD 서버 문서(Documentation) 속성

Jim McKeith는 제가 이전에 읽어 보시기를 권했던 RAD 서버 API 문서화에 대한 게시물을 작성했습니다. 그 내용 외에도 이 비디오에서는 명명 된 매개 변수를 사용하여 Resource Suffix 정의에 대해서도 알아봅니다.

 

3 가지 주요 속성이 있습니다. (아래 예제에서는 TEMSDataSetResource를 배치하여 문서화를위한 리소스 사용을 정의합니다).

 

EndPointRequestSummary

EndPointRequestParameter

ResourceSuffix

 

[EndPointRequestSummary('Exams', 'Exams', 'List of Exam', 'application/json', '')]

 

[EndPointRequestParameter(TAPIDocParameter.TParameterIn.Path, 'EXAM_ID', 'EXAM_ID for identifying a specific exam', false, TAPIDoc.TPrimitiveType.spInteger, TAPIDoc.TPrimitiveFormat.None, TAPIDoc.TPrimitiveType.spInteger, '', '')]

 

[ResourceSuffix('./')]

[ResourceSuffix('List', './')]

[ResourceSuffix('Get', './{EXAM_ID}')]

[ResourceSuffix('Put', './{EXAM_ID}')]

[ResourceSuffix('Delete', './{EXAM_ID}')]

dsrEXAM: TEMSDataSetResource;

 

ResourceSuffix는 기본 URL 호출을 정의합니다. List, Get, Put, Delete 속성은 해당 호출을 위한 확장을 정의합니다 (마스터-디테일 데이터를 작성할 때 중요합니다. 두 번째 비디오 및 다음 블로그 게시물에서 다룹니다).

 

ResourceSuffix 리소스 위임(delegation)은 매우 강력하여 마스터-디테일 데이터를 매우 빠르게 구축 할 수 있습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 724002
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 721766
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 723831
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 727184
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 727548
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 723350
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 734899
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 929245
1395 N 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 153169
1394 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 127279
1393 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 91392
1392 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 73403
1391 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 56407
1390 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 52246
1389 Find the O/S Language Type c2design 2014.07.30 49907
1388 RAD Studio Resource Center 박병일 2012.01.26 47905
1387 CD-ROM 열고 닫기 박병일 2011.12.22 45376
1386 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 39608
1385 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 34568
1384 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 30374