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 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
1183 [고객사례-사물인터넷, 앱, 델파이] 로봇청소기 제어 앱 '니토 툴리오' 관리자 2020.03.24 369
1182 RAD Studio 10.3.3 안드로이드 앱에서 센서 컴포넌트 사용시 링크 오류 해결방법 김원경 2020.03.18 343
1181 [델파이 안드로이드 64비트 오류 수정] TInAppPurchase 컴포넌트 수정 file 김원경 2020.03.18 335
1180 [기술백서] 다양한 팀 '협업' 방법론과 개발 방식 관리자 2020.03.18 643
1179 RAD Studio IDE에 툴 추가하기 file 김원경 2020.03.17 329
1178 RAD 서버 : 웹 속성을 폴더에 매핑하기 file 김원경 2020.03.17 1534
1177 델파이 개발자 관점에서 본 윈도우 개발 file 김원경 2020.03.13 700
1176 C++ 언어와 C++빌더의 23년! 관리자 2020.03.13 569
1175 MS 비주얼 스튜디오 C++을 C++빌더와 함께 활용하기 관리자 2020.03.12 527
1174 Swagger / YAML 및 RESTful API의 자체 문서화 김원경 2020.03.11 1588
1173 [고객사례-유틸리티, 델파이] Navuu 관리자 2020.03.09 330
1172 [고객사례-유틸리티, 델파이] SupRemo - 개인방송, 화상회의 솔루션 관리자 2020.03.09 817
» RAD 서버에 Swagger UI 임베이딩 김원경 2020.03.09 527
1170 검사(Audits)와 측정(Metrics) 기능을 이용 소스코드 표준과 규약 준수를 측정하고 개선할 수 있습니다. 험프리 2020.03.06 281
1169 TEMSDataSetResource 컴포넌트를 사용하여 RAD 서버의 마스터-디테일 데이터 구현하기 file 김원경 2020.03.06 403
1168 RESTful 마스터-디테일 데이터를 사용하는 클라이언트 애플리케이션을 TRESTResponseDataSetAdapter를 사용하여 개발하기 file 험프리 2020.03.03 507
1167 [10.4 프리뷰] 베타 서비스 시작 & 새 기능 미리 보기 관리자 2020.03.03 1605
1166 델파이 25주년 기념 무료 크로스 플랫폼 샘플 앱 25개 선정(델파이/C++ 샘플 150여종) 험프리 2020.03.02 659
1165 윈도우 10에서의 High DPI 김원경 2020.03.02 1248
1164 이 달의 기술자료 - 2020년 03월 file 험프리 2020.02.28 271