RESTClientFlow.png REST 클라이언트 라이브러리(이하 REST 클라이언트)는 REST 기반 웹서비스와 연동하기 위한 프레임워크입니다. 이 라이브러리는 델파이에서 지원하는 모든 플랫폼에서 사용할 수 있습니다.(XE5 부터 지원시작)

 

이 프레임워크는 공식적으로 JSON 기반의 데이터를 지원합니다.

 

주요 컴포넌트 및 클래스

REST 클라이언트는

  • 요청과 응답에 관련된 3개의 주요 컴포넌트와
  • 응답 데이터(JSON)를 데이터셋으로 변환하는 컴포넌트,
  • 인증과 관련된 4개의 컴포넌트를 제공합니다.

 

TRESTClient

서비스에 대한 요청을 실제로 수행하는 컴포넌트입니다. 서비스에 대한 HTTP 연결을 관리하고, HTTP 해더 및 프록시 서버를 처리하고 응답 데이터를 받습니다. 인증 컴포넌트를 지정해 요청에 대한 인증 데이터를 손쉽게 추가할 수 있습니다.

 

주요 속성

  • BaseURL : 서비스 URL 중 변경되지 않는 정보를 입력합니다.(프로토콜, 도메인/호스트, 포트 등)
  • Authenticator : 인증 컴포넌트를 지정해 인증 정보를 추가할 수 할 수 있습니다.
  • UserAgent : 사용자 에이전트

 

TRESTRequest - 요청

서비스에 대한 실제 HTTP 요청에 대한 정보를 설정합니다. 여러가지의 요청을 위해 여러개의 컴포넌트로 구성할 수 있습니다. Client 속성에 지정된 TRESTClient의 BaseURL과 TRESTRequest의 Resouce, Method 속성을 조합해 요청을 합니다. Resource에 중괄호를 이용해 파라미터화 할 수 있습니다.

 

주요 속성

  • Resource : 요청할 서비스의 리소스의 경로, 중괄호({})로 파라미터화 가능
  • Method : 요청의 HTTP 메소드(GET, POST, PUT, DELETE, PATCH)
  • Params : 리소스의 파라미터를 지정할 수 있는 목록
  • Client : TRESTClient 지정
  • Response : 응답 컴포넌트 지정
  • Accept / AcceptCharset / AcceptEncoding : 응답에 사용할 수 있는 내용의 종류 / 캐릭터셋 / 인코딩 타입을 지정

 

TRESTResponse - 응답

서비스에서 반환된 데이터를 보관합니다. 이 데이터에는 HTTP 상태 코드와 오류메시지(있는 경우)를 포함합니다. 

 

주요 속성

  • Content : 응답받은 데이터를 보관
  • ContentLength : 응답받은 데이터의 길이
  • ContentType : 응답받은 데이터의 타입
  • RootElement : 응답받은 JSON 데이터 중 사용할 항목 지정 가능

 

TRESTResponseDataSetAdapter

서비스의 응답 데이터가 JSON 형식인 경우, 응답 데이터를 분석하고 그 데이터를 TDataSet(TFDMemTable 등)에 전송합니다.

내부의 파서는 JSON 객체와 JSON 객체의 배열을 찾습니다. 파서는 RootElement에 설정된 JSON 객체 또는 배열의 키로 필드를 만들고 값으로 레코드를 생성합니다. 객체의 경우 레코드 1개가 배열의 경우 배열의 길이만큼 레코드가 생성됩니다.

 

주요 속성

  • RootElement : 변환할 데이터 중 사용할 항목을 지정합니다.
  • Response : 변환할 데이터를 보관한 TRESTResponse 지정
  • Dataset : 분석한 데이터를 보관(전송)할 데이터셋 지정

 

인증 컴포넌트

대부분의 서비스는 사용 전 인증이 필요합니다. REST 클라이언트는 서비스에서 요구하는 인증방법을 컴포넌트 기반으로 설정 해 TRESTClient의 Authenticate 속성에 지정할 수 있습니다.

다음 인증 컴포넌트를 제공합니다.

  • TSimpleAuthenticator : 사용자 이름과 패스워드 등의 입력 필드를 가진 HTML 폼과 같은 기본적인 인증방식 구현
  • THTTPBasicAuthenticator : HTTP 기본 인증 처리
  • TOAuth1Authenticator, TOAuth2Authenticator : OAuth1/2 인증 컴포넌트, 서비스 공급사의 웹페이지로 로그인 후 토큰을 발급받아 인증하는 방식
  • 커스텀 인증 클래스 생성 : TCustomAuthenticator를 상속받아 DoAuthenticate 메소드를 재정의

 

기타 참고자료

데브기어 기술자료

엠바카데로 기술자료

 
번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15465
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13971
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16505
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22061
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23273
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18932
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39266
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174728
1322 [DelphiCon 요약] 델파이 코드 빠르게 작성하기 (Code Faster in Delphi) 관리자 2020.12.22 611
1321 [업데이트 서브스크립션 무료 솔루션] TWINECOMPILE – C++ 컴파일 속도를 현격하게 줄여줍니다! [1] 관리자 2020.12.18 487
1320 델파이 윈도우 앱 샘플 – BLOB 스트림을 내/외부에서 쉽게 사용하기 관리자 2020.12.15 364
1319 델파이 웹 개발: TMS WEB CORE VS. UNIGUI VS. INTRAWEB 관리자 2020.12.10 1040
1318 1PASSWORD: 델파이로 개발된 BEST 패스워드 관리 프로그램 관리자 2020.12.07 853
1317 [UX Summit 요약] 감지와 응답: 지속적 파악을 통한 실제 결과를 더 좋게 하기 (Sense & Respond: Continuously Learning Our Way to Better Outcomes) 관리자 2020.12.02 424
1316 개발. 공유. 영감. – 엠바카데로 총괄 매니저가 전하는 메세지 (2020.11) 관리자 2020.12.01 338
1315 [10.4.1 패치] 애플(APPLE) 플랫폼 지원 관리자 2020.11.30 465
1314 [델파이 게임 개발] 겟잇(GETIT)에서 ALIEN INVASION 다운로드 받기 관리자 2020.11.30 401
1313 이 달의 기술자료 - 2020년 12월 험프리 2020.11.26 366
1312 RAD스튜디오 2020 로드맵 – 자세한 내용을 확인해보세요! (PM들의 코멘터리) 관리자 2020.11.19 523
1311 [DelphiFeeds.com 리뉴얼] 새롭게, 델파이 개발자들에게 매우 유용한 뉴스 피드를 모아서 제공합니다. 관리자 2020.11.19 339
1310 RAD스튜디오 로드맵 (2020.11) 관리자 2020.11.18 390
1309 델파이 개발자용 웹 개발 기술들 비교 및 평가 (Evaluating Web Development Frameworks for Delph) file 관리자 2020.11.17 507
1308 [UX Summit 요약] 애플리케이션을 개발할 때 데스크톱부터 개발해야 하는 이유 (Why Desktop First to Develop an Application) 관리자 2020.11.17 339
1307 [10.4.1 패치] 델파이 컴파일러와 LSP 업데이트 관리자 2020.11.11 729
1306 [UX Summit 요약] 터치스크린 POS 화면 디자인 하기 (Point of Sale Screen Concept) 관리자 2020.11.11 369
1305 [UX Summit 요약] 멀티플랫폼 앱에 가장 효과적인 UX 디자인 (Effective UX Design for Multiplatform Apps) 관리자 2020.11.10 316
1304 단 한 줄의 코드로 완성하는 C++ CUSTOMER/SALES 애플리케이션 관리자 2020.11.09 406