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 17865
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16226
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18873
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24455
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25835
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21195
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41783
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177087
136 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 83564
135 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 71958
134 RAD Studio Resource Center 박병일 2012.01.26 46536
133 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 16141
132 "Could not load SSL library." 오류 대응(XE7: BaaS, RESTClient, DataSnap) [1] Humphery 2014.09.12 16003
131 [REST API] REST API 이해하기 험프리 2017.05.23 15331
130 델파이로 만든 구글 지오코딩 쎔플 입니다. 박병일 2012.02.06 11025
129 [REST] REST 클라이언트로 REST 기반 웹서비스와 연동할 수 있습니다. [3] file 험프리 2014.01.29 10923
128 OAuth 2.0 연동 - 카카오 API(카카오톡 프로필) [9] 험프리 2018.12.26 10127
127 이 달의 기술자료 - 2014년 8월 file 험프리 2014.07.04 9960
126 델파이 XE2 Update4의 새기능 - 더 쉬운 모바일 REST 접속 file 박병일 2012.03.06 9150
125 [링크]안드로이드를 위한 데이터 스냅 서버 박병일 2012.01.12 8437
124 델파이 XE2로 만든 아이폰용 Datasnap Client 관리자 2011.12.22 7289
123 [REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) [2] 험프리 2017.05.23 7168
122 [REST API] 다음 Kakao > 로컬 > 주소검색 연동하기 [2] 험프리 2017.09.18 6384
121 [델파이 문법] 프로시저와 함수 #7 file 관리자 2012.08.13 6158
120 RAD Studio, Delphi 그리고 C++빌더 로드맵 - 한글(2014년 3월) file Humphery 2014.03.05 5571
119 [XE5만의 특별한 기능] 응답하라! Delphi VCL 개발자 관리자 2013.12.21 4900