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

2020.03.09 13:04

김원경 조회 수:1967

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 724660
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 722442
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 724500
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 727878
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 728174
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 724036
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 735522
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 929886
1383 모바일 장비의 엔터프라이즈 데이터: 가장 많은 실수 TOP 5와 방지 요령 관리자 2021.06.24 2300
1382 TEdgeBrowser에서 스크립트 실행하기와 소스 보기 관리자 2021.06.22 3305
1381 C++빌더 VCL 애플리케이션에서 PYTHON4DELPHI 활용하기 관리자 2021.06.09 2544
1380 네이티브 IOS & 안드로이드 앱 만들기 첫 걸음 관리자 2021.06.09 2774
1379 [개발 예제] 웹 소켓 서버&클라이언트 채팅 프로그램 관리자 2021.06.08 4620
1378 C++빌더 컨테스트! 관리자 2021.06.04 1494
1377 내가 델파이를 계속 선택하는 이유 관리자 2021.06.01 2288
1376 BDE/파라독스를 인터베이스(INTERBASE)로 마이그레이션 하기 관리자 2021.05.31 1919
1375 이 달의 기술자료 - 2021년 06월 file 험프리 2021.05.27 2054
1374 [오브젝트 파스칼을 처음 접하는 사람들을 위한] 무료 튜토리얼 비디오 (DEREK BANAS) 관리자 2021.05.25 1569
1373 델파이 코드 정적 분석기 V2.4 출시 및 무료 다운로드 관리자 2021.05.25 2705
1372 [디버깅 작업] 코드사이트 – 무료 EXPRESS 에디션 활용하기 관리자 2021.05.20 1523
1371 코드 서명 – 여러분이 개발한 프로그램, 컴퓨터 바이러스처럼 보이지는 않나요? 관리자 2021.05.12 2139
1370 인터베이스, 비주얼 스튜디오 지원 확장 관리자 2021.05.10 1678
1369 NEW! 델파이 오브젝트 파스칼 스타일 가이드 관리자 2021.05.04 1889
1368 [패치] RAD스튜디오 10.4.2, 델파이 컴파일러 관리자 2021.05.04 2383
1367 API로 머신 러닝과 컴퓨터 비전 활용하기 관리자 2021.05.04 1687
1366 머신 러닝: 윈도우 앱에 적용하는 5가지 방법(파이썬과 델파이) 관리자 2021.04.30 1800
1365 이 달의 기술자료 - 2021년 05월 험프리 2021.04.29 2309
1364 델파이/C++ 프로그램 현대화 – 패스트리포트(FASTREPORT)를 활용해 윈도우 HIGH DPI 지원 버전으로 마이그레이션하기 관리자 2021.04.26 1263