Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

내 데이터베이스에 데이터를 CRUD(생성,조회,변경,삭제)하는 REST 서비스 구축하기: RAD 서버 활용


Recommended Posts

델파이 또는 C++빌더 개발자라면 내 데이터베이스 안에 있는 데이터를 CRUD(생성,조회,변경,삭제)하는 REST 서비스를 빠르고 편하게 구축할 수 있다.

스크린샷 모음을 보면 알 수 있겠지만, 이 정도 서비스는 코딩을 하지 않아도 자동으로 만들어 진다.

목차


 

이 내용은 RAD 서버 기술 가이드 (아래 링크를 통해 무료로 받을 수 있다) 중 일부이다: 

이 내용을 더 자세히 학습할 수 있는 방법

이제, 데이터를 CRUD(생성,조회,변경,삭제)하는 REST로 서비스해보자.

YouTube 비디오 보기:

1. REST 방식으로 제공하고 싶은 데이터베이스를 IDE의 FireDAC Explorer를 사용해 지정하고 연결한다.

  •  IDE의 메인 메뉴 > Tools > FireDAC Explorer > 해당 DBMS 클릭 > 오른쪽 클릭 > Add Connection (새 연결 추가) --> 링크

2. RAD 서버 프로젝트를 생성한다

  •  IDE의 메인 메뉴 > File > New > Other > RAD Server > Create package with resource 선택 > Resource name 지정 > Database EndPoints 선택 > (앞에서 지정한) 데이터베이스 연결 선택 > 그 안에 있는 모든 테이블 중 원하는 테이블들을 선택 > 완료

3. 자동으로 추가되고 설정된 컴포넌트들을 확인한다 (앞 단계 마법사에서 테이블 중에 "CUSTOMER" 테이블을 선택했다고 가정하고 설명하겠다)

  • FDConnection1:
    • TFDConnection 클래스의 오브젝트다. 
    • 여기에서는, 지정된 데이터베이스 연결((Data Explorer에서 지정하고, RAD Server 프로젝트의 마법사에서 선택)을 사용해 해당 데이터베이스에 연결한다.
  • qryCUSTOMER: 
    • TFDQuery 클래스의 오브젝트다. 
    • 여기에서는, RAD Server 프로젝트의 마법사에서 선택했던 테이블의 데이터를 가져와서 담아 둔다. 즉 이 데이터셋 오브젝트에는 이미 기본적인 SQL 문장이 만들어져 있다.
  • dsrCUSTOMER:
    • TEMSDataSetResource 클래스의 오브젝트다. 
    •  'qry+테이블명' 오브젝트에 담긴 데이터를 REST로 서비스하는 역할을 담당한다.

4. dsrCUSTOMER의 프로퍼티들을 몇 가지 지정한다. (Object Inspector를 사용) 

  • AllowedActions 프로퍼티
    • 펼치면 기본적으로 해당 REST 메서드(List, Get, Post, Put, Delete)들이 나열되므로, 그 중에서 제공할 메서드를 모두 선택하면 된다.
  • DataSet 프로퍼티
    • 이미 qryCUSTOMER으로 지정되어 있음을 알 수 있다 (즉 qryCUSTOMER 데이터셋을 기반으로 REST 서비스를 제공한다)
  • 기타 기능을 위한 프로퍼티들
    • PageParamName: 데이터를 나누어 제공할 때 사용할 이름 (예: page)
    • PageSize: 한 페이지에 담을 데이터 개수 (예: 50)
    • SortingParamPrefix: 정렬(sorting)을 할 때 사용할 이름의 접두사 (예: sf)
      • 이 경우 이 테이블에 Address라는 컬럼이 있다면 sfAddress를 HTTS 요청에 넣으면 이 컬럼을 기준으로 정렬하라는 의미다
    • 그 외에도 많은 옵션들이 있다.

5. 다 됐다. RAD 서버를 실행하면 REST 서비스가 시작된다.

웹 브라우저에서 다음과 같은 요청을 테스트해보자.

(모든 데이터는 JSON 형식으로 제공되는 것을 볼 수 있다)

요청을 하기에 앞서 REST 호출 방법을 간단히 설명하면 다음과 같다.

요청 예시: https://localhost:8080/test/customers/?page=2&sfCity=A 

  • localhost: 웹서버 주소
  • :8080: 웹서버가 사용하는 Port 번호 (RAD Server 마법사에서 지정한 값)
  • test: 리소스명 (RAD Server 마법사에서 지정한 값)
  • customers: EMS리소스명 (원래 테이블명은 CUSTOMER지만, 코드에서 customers라고 수작업으로 변경했다. REST의 표준 관행을 따르기 위함) 
  • ?: 뒤에 파라미터가 나올 것이라는 기호 
  • page=2: 두 번째 페이지 (page는 dsrCUSTOMER의 프로퍼티에서 지정했었다)
  • &: 또 다른 파라미터가 나올 것이라는 기호
  • sfCity=A: CITY 테이블을 오름차순으로 정렬하라 (참고: A가 아니라 D를 적으면 내림차순)

이제 아래와 같이 요청을 하면서, 그 결과를 보자.
(참고, 요청이 외부에 그대로 드러나는 것을 방지하는 기능인 Sqids 역시 RAD 서버에 있으므로 아래 요청을 난수화 할 수 있다. )

https://localhost:8080/test/customers

  • CUSTOMER 테이블의 모든 데이터를 볼 수 있다.

https://localhost:8080/test/customers/1003

  • CUSTOMER 테이블에서 키 필드인 CUST_NO의 값이 1003인 데이터를 볼 수 있다.

https://localhost:8080/test/customers/?page=2

  • CUSTOMER 테이블을 지정된 페이지 당 데이터 수만큼을 제공할 때 두 번째 페이지에 해당하는 데이터를 모두 볼 수 있다.  

https://localhost:8080/test/customers/?page=2&sfCity=D

  • CUSTOMER 테이블을 CITY 컬럼을 기준으로 내림차순으로 정렬한 후 지정된 페이지 당 데이터 수만큼을 제공할 때 두 번째 페이지에 해당하는 데이터를 모두 볼 수 있다. 

 

스크린샷 모음

RAD Server2.png

RAD Server3.png

RAD Server31.png RAD Server32.png RAD Server33.png

RAD Server34.png

RAD Server4.png

 

RAD Server43.pngRAD Server42.png

RAD Server5.png

RAD Server6.png

RAD Server7.png

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.