드림팩토리를 통해 자동으로 RESTAPI를 생성해보자.

[드림팩토리 설치]

드림팩토리를 설치하기 위해 먼저 설치되어야할 소프트웨어들이 있다.

  • PHP 7.2 이상

  • Git

  • 웹서버

  • 데이터베이스(드림팩토리 자체에서 사용할 용도)

  • Composer

https://github.com/dreamfactorysoftware/dreamfactory.git에서 클론을 받는다.

드림 팩토리는 PHP Laraval Framework를 통해 개발된것을 볼 수 있으며 composer를 통해 패키지를 설치해준다.

artisan 커맨드를 통해 드림팩토리에서 사용할 데이터베이스의 정보 및 사용자 정보를 입력한다.

 

RESTAPI에 연결한 DB 정보가 아닌 드림팩토리 자체에서 사용할 DB정보를입력
드림팩토리 계정 정보

환경설정이 완료되었으면 서버를 시작한다.

host 옵션을 주지않으면 디폴트로 127.0.0.1로 서버가 열리는데 내부에서만 접근 가능하므로,

0.0.0.0으로 서버를 열고 방화벽 정책을 통해 화이트리스트 기반으로 접근제어하는게 좋겠다.

드림팩토리를 리눅스에 설치해야하는데 리눅스에서 웹브라우저로 서비스를 이용해도 괜찮다면 127.0.0.1로 열어도 괜찮다.

 

설치가 정상적으로 이루어지면 기존에 생성한 계정을 통해 로그인한다

 

[RESTAPI 만들기]

로그인 후 메인화면

 

먼저 Services 탭에서 서비스를 생성한다.

 

서비스 생성시 Config탭에서 연결할 DB의 정보를 입력한다.

 

이후 해당 서비스에 접근할 권한을 설정하기 위해 role 탭에서 해당 서비스 전용 role을 생성한다.

 

위 세팅은 sakila서비스에 있는 모든 프로시져에 대해 get과 post 메소드만을 허용한다는 의미이다.

 

이제 해당 권한을 적용할 어플리케이션을 Apps 탭에서 생성하고 위에서 생성한 role을 적용한다.

 

어플리케이션을 생성하면 위에서 생성한 서비스에 접근할 수 있는 API Key를 생성해준다.

해당 API Key를 가지고 sakila 서비스에 있는 모든 프로시져에 대해 get과 post 메소드를 통해 접근할 수 있다.

 

Data탭에 sakila 서비스를 선택 후 테이블 목록이 제대로 조회된다면 드림팩토리와 데이터베이스 연결이 제대로 된다는 뜻이다. 

보통은 외부 데이터베이스에서 접근 통제 rule을 설정해서 허용해 주어야 하기 때문에 바로 연결되지 않을것이다.

 

외부 데이터베이스 RESTAPI read용도의 Stored Procedure를 생성해 두었다.

 

해당 프로시저를 실행하면 이렇게 결과를 준다.

 

postman을 통해 헤더에 API Key를 추가하여 API를 호출하면,

Stored Procedure의 결과를 Json형태로 파싱해 response를 받을 수 있다.

 

위 예제에서 https://xxxxxx.apps.dreamfactory.com/api/v2/sakila/_proc/getRental와 같이 드림팩토리의 URL을 사용해야 하는데,

express류의 서버를 포팅서버로 두고 express 내부에서 드림팩토리로 통신하여 

https://test.com/sakila/getRental과 같이 URI를 사용함으로써 리소스를 좀더 명확하게 표기할 수 있다.

 

API Docs

또한 /example/{id} 형태의 가변적인 API가 필요할 경우 드림팩토리 상에서 /_proc/{procedure_name} 형태에

post 메소드를 통해 request를 보내고 id는 body에 포맷에 맞게 붙여주면 된다.

 

RESTAPI의 여러가지 사용법은 위 이미지 처럼 API Docs 형태로 가이드가 존재하니 설명대로 사용하면 되겠다.

 

'데이터베이스' 카테고리의 다른 글

How to run multiple instances of MariaDB  (0) 2020.04.07
[Redis] Bloom Filter  (0) 2020.01.31
Database Cache Server  (0) 2020.01.23
[Redis] HyperLogLog  (0) 2020.01.22
[hiredis] Using redis Database in C  (0) 2020.01.17

+ Recent posts