외부 연동에 제공되는 External API, Open API 작성 가이드
“ LogicRepository Schema 사용 사례 위주 “
External API
외부 또는 레거시 시스템과 연동을 위해서 사용하는 API
external API는 자동 생성 API와 설정형 API를 사용할 수 있다.
자동 생성 API
Info |
---|
{{protocol}}://{{hostname}}:{{port}}/ext/{{nodeType}}/{{event}} |
nodeType을 만들면 create, update, delete, list, read API를 기본적으로 사용 가능
...
title | NodeType (sampleLogicMybatis) 의 기본 API |
---|
...
외부 연동에 제공되는 External API, Open API 작성 가이드
“ LogicRepository Schema 사용 사례 위주 “
“아래 모든 Sample API에 대하여 POSTMAN Test API Collection 에 정의해두었습니다.
POSTMAN에서 import하여 참조해주세요.”
- backendcore : postman/collection/Test API.postman_collection.json
External API
외부 또는 레거시 시스템과 연동을 위해서 사용하는 API
external API는 자동 생성 API와 설정형 API를 사용할 수 있다.
자동 생성 API
Info | ||||||
---|---|---|---|---|---|---|
{{protocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis
|
nodeType을 만들면 create, update, delete, list, read API를 기본적으로 사용 가능
Expand | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||
|
설정 API
create
|
설정 API
Info |
---|
{{protocol}}://{{hostname}}:{{port}}/ext/{{apiCategory}}/{{api}} |
1. apiCategory 설정
apiType : external
src/main/resources/schema/test/testExternalApi.json
...
apiType : external
method : POST, GET, PUT, DELETE, PATCH
parameters : 필수 request Parameter 설정을 할 수 있다.
...
apiType : external
method : POST, GET, PUT, DELETE, PATCH
parameters : 필수 request Parameter 설정을 할 수 있다.
...
속성정의 : api / apiConfig / type : event
apiType : external
아래 사례는
sampleLogicMybatis
logic형 NodeType의 “EVENT” API 설정이다.- method : POST
- apiType : external
- parameter : title 필수
config 의
tid : sampleLogicMybatis
schema에 선언된event : testEvent
를 호출하여(
sampleLogicMybatisSchema
에 미리 설정한event : testEvent
)
actionBody : sampleLogicMybatisService.testEventMethod
의 응답결과를 반환
src/main/resources/schema/test/testExternalApi.json
Code Block |
---|
Code Block |
{ "parametertypeId": "titleapi", "namecategory": "TitletestExternalApi", "valueTypeapiId": "STRINGtestEvent", "requiredapiName": true"testEvent API }, { "parameter": "price"(Sample External)", "namemethod": "PricePOST", "valueTypeapiType": "NUMBERexternal", "requiredparameters": [ false { } ], "statisticparameter": true"title", "aggregation": true, "configname": [ {"Title", "configIdvalueType": "rootSTRING", "tidrequired": "sampleLogicMybatis" true }, { "typeparameter": "eventprice", "eventname": "testEventPrice", "allowParamsvalueType": false"NUMBER", "orderNorequired": 1false } ] } |
event 설정
tid : sampleLogicMybatis
schema에event : testEvent
이벤트 추가
"actionBody": "sampleLogicMybatisService.testEventMethod"
를 실행할 eventAction 설정
/Users/jjong/IdeaProjects/backendcore/src/main/resources/schema/test/sampleLogicMybatisSchema.json
Code Block |
---|
[ { ], "statistic": true, "tidaggregation": true, "sampleLogicMybatis",config": [ { "parentIdconfigId": "testroot", "typeIdtid": "nodeTypesampleLogicMybatis", "repositoryTypetype": "logicevent", "microserviceevent": "contentstestEvent", "typeNameallowParams": "Samplefalse, Logic Mybatis", "serviceNameorderNo": "sampleLogicMybatisService",1 } ] "propertyTypes": } |
event 설정
tid : sampleLogicMybatis
schema에event : testEvent
이벤트 추가
"actionBody": "sampleLogicMybatisService.testEventMethod"
를 실행할 eventAction 설정
/Users/jjong/IdeaProjects/backendcore/src/main/resources/schema/test/sampleLogicMybatisSchema.json
Code Block |
---|
[ { ... ] "tid": "sampleLogicMybatis", "eventsparentId": ["test", "typeId": "nodeType", { "repositoryType": "logic", "eventmicroservice": "testEventcontents", <- event ID (Unique) "typeName": "Sample Logic Mybatis", "nameserviceName": "Test EVENTsampleLogicMybatisService", "namepropertyTypes": "Test EVENT",[ "noneExecute": false,... ], "eventActionsevents": [ { "actionevent": "testEventActiontestEvent", <- eventActionevent ID (Unique) "actionNamename": "Test EVENT ACTION", "actionTypename": "serviceTest EVENT", "noneExecute": false, "actionBodyeventActions": "sampleLogicMybatisService.testEventMethod", [ { "order": 1 "action": "testEventAction", <- }eventAction ID (Unique) ] } ]"actionName": "Test EVENT ACTION", } ] |
Open API
Open API 유형은 자동 생성 API를 사용할 수 없다. 설정 API 만 사용 가능하다.
apiKey 인증이 필요하기 때문에 Open API는 항상 연동시스템에게 부여한 apiKey를 포함하여 호출이 필요하다.
apiKey 없이 호출한 Open API Respose
Code Block |
---|
{ "timestampactionType": "2021-03-18T07:38:22.108+0000",service", "actionBody": "sampleLogicMybatisService.testEventMethod", "status": 400, order": 1 } ] "error": "Bad Request", } "message": "Required String parameter 'apiKey' is not present", ] } ] |
Open API
Open API 유형은 자동 생성 API를 사용할 수 없다. 설정 API 만 사용 가능하다.
apiKey 인증이 필요하기 때문에 Open API는 항상 연동시스템에게 부여한 apiKey를 포함하여 호출이 필요하다.
apiKey 없이 호출한 Open API Respose
Code Block |
---|
{ "pathtimestamp": "/api/testExternalApi/testList" } |
apiKey 발행
아래와 같이 해당 위치의 파일에 데이터를 작성하고 loadSchema하여 apiKey 생성하는 방식
src/main/resources/schema/core/api/apiKeyData.json
Code Block |
---|
[ {2021-03-18T07:38:22.108+0000", "status": 400, "typeIderror": "apiKeyBad Request", "idmessage": "W2!G*LgUu?5*!c*VubLVsfVyW42t$KHtRequired String parameter 'apiKey' is not present", "namepath": "SAMSUNG" } ] /api/testExternalApi/testList" } |
apiKey 발행
POSTMAN Collection 참조
/postman/collection/Test API.postman_collection.json
apiKey Create API로
...
생성
Status | ||||
---|---|---|---|---|
|
발행한 API 조회
Status | ||||
---|---|---|---|---|
|
설정 API
Info |
---|
{{protocol}}://{{hostname}}:{{port}}/api/{{apiCategory}}/{{api}}?apiKey=XXXXXX |
API를 설정하는 방식은 External API 의 설정방식과 동일하다.
apiType 만 open 으로 세팅하면 된다.
1. apiCategory 설정
apiType : open
src/main/resources/schema/test/testOpenApi.json
...
Code Block |
---|
{ "typeId": "api", "category": "testOpenApi", "apiId": "testList", "apiName": "test LIST API (Sample Open)", "method": "GET", "apiType": "open", "parameters": [ { "parameter": "title", "name": "Title", "valueType": "STRING", "required": true }, { "parameter": "price", "name": "Price", "valueType": "NUMBER", "required": false } ], "statistic": true, "aggregation": false, "config": [ { "configId": "root", "tid": "sampleLogicMybatis", "type": "query", "allowParams": false, "orderNo": 1, "response": [ { "field": "all", "type": "all" } ] } ] } |
...
속성정의 : api / apiConfig / type : event
apiType : open
Code Block |
---|
{ "typeId": "api", "category": "testOpenApi", "apiId": "testEvent", "apiName": "testEvent API (Sample Open)", "method": "POST", "apiType": "open", "parameters": [ { "parameter": "title", "name": "Title", "valueType": "STRING", "required": true }, { "parameter": "price", "name": "Price", "valueType": "NUMBER", "required": false } ], "statistic": true, "aggregation": true, "config": [ { "configId": "root", "tid": "sampleLogicMybatis", "type": "event", "allowParams": false, "orderNo": 1, "event": "testEvent" } ] } |
...