Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

외부 연동에 제공되는 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를 기본적으로 사용 가능

...

titleNodeType (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

Status
colourGreen
titleget
/list{{protocolnodeType}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/readevent}}

  • nodeType을 만들면 create, update, delete, list, read API를 기본적으로 사용 가능

Expand
titleNodeType (sampleLogicMybatis) 의 기본 API

Status
colourYellowGreen
titlePOSTget
{{protocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/createlist

Status
colourYellowGreen
titlePOSTget
{{protocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/updateread

Status
colourYellow
titlePOST
{{protocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/delete

설정 API

info

create

Status
colourYellow
titlePOST
{{protocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/update

Status
colourYellow
titlePOST
{{apiCategoryprotocol}}://{{hostname}}:{{port}}/ext/sampleLogicMybatis/delete

설정 API

Info

{{protocol}}://{{hostname}}:{{port}}/ext/{{apiCategory}}/{{api}}

1. apiCategory 설정

src/main/resources/schema/test/testExternalApi.json

...

  • 속성정의 : api / apiConfig

    • apiType : external

    • method : POST, GET, PUT, DELETE, PATCH

    • parameters : 필수 request Parameter 설정을 할 수 있다.

...

  • 속성정의 : api / apiConfig

    • apiType : external

    • method : POST, GET, PUT, DELETE, PATCH

    • parameters : 필수 request Parameter 설정을 할 수 있다.

...

아래 사례는 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
{ "typeId": "api", "category": "testExternalApi", "apiId": "testEvent", "apiName": "testEvent API (Sample External)", "method": "POST", "apiType": "external", "parameters": [
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
colourYellow
titlePOST
{{protocol}}://{{hostname}}:{{port}}/node/apiKey/create.json

  • 발행한 API 조회

Status
colourGreen
titleget
{{protocol}}://{{hostname}}:{{port}}/node/apiKey/list.json

설정 API

Info

{{protocol}}://{{hostname}}:{{port}}/api/{{apiCategory}}/{{api}}?apiKey=XXXXXX

API를 설정하는 방식은 External API 의 설정방식과 동일하다.

apiType 만 open 으로 세팅하면 된다.


1. apiCategory 설정

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"
        }
      ]
    }
  ]
}

...

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"
    }
  ]
}

...