API 설정은 API 호출에 대한 형식을 정의하며, 실제 API의 동작은 apiConfig로 정의한다.
하나의 API는 여러개의 API Config를 설정함으로써 API GW의 Aggregation 기능을 제공한다.
Info |
---|
{{protocol}}://{{hostname}}:{{port}}/{{apiType}}/{{apiCategory}}/{{api}} |
API는 다음과 같은 속성을 정의한다.
pid | valueType | description |
---|---|---|
category(*) | REFERENCE | 상위 API 카테고리 지정 |
apiId(*) | STRING | API의 아이디이며 API URL의 마지막 path에 사용 |
apiName | STRING | API 명칭 |
method | CODE | API 호출 Method (POST, GET, PUT, DELETE, PATCH) |
apiType | CODE | API 유형 |
apiAuthority | REFERENCES | 권한 |
secure | BOOLEAN | SSL만 허용 여부 |
signed | BOOLEAN | 로그인된 사용자만 허용 여부 |
aggregation | BOOLEAN | 하나 이상의 apiConfig를 이용하여 여러 API를 조합하여 실행할지를 결정 |
statistic | BOOLEAN | 해당 API를 통계에 사용할지를 결정, false일 경우 API 로그에 7일만 보관되고 삭제 |
parameters | CHILDREN | 호출 파라미터 정의 |
root | PART | aggregation이 false인 경우 단독 apiConfig 설정 |
config | CHILDREN | aggregation이 true인 경우 다중 apiConfig 설정 |
method
API 호출 Method
POST, GET, PUT, DELETE, PATCH
Code Block |
---|
{
"typeId": "api",
"category": "product",
"apiId": "read",
"apiName": "상품 조회",
"apiType": "service",
"method": "GET"
} |
sample api
{{protocol}}://{{hostname}}:{{port}}/svc/product/read?
_siteId=bestshop
_deviceType=pc
productId=1323881205
→ POST
Code Block |
---|
{
"result": "405",
"resultMessage": "허용하지 않는 Method 입니다."
} |
→ GET
Code Block |
---|
{
"result": "200",
"resultMessage": "SUCCESS",
"item": {
"id": 1323881205,
"name": "[LG전자] X2 자급제폰(32GB)",
...
} |
apiType
|
---|
apiAuthority
secure
SSL만 허용 여부
Code Block |
---|
{
"result": "500",
"resultMessage": "허용하지 않는 Protocol 입니다."
} |
signed
로그인된 사용자만 허용 여부
Code Block |
---|
{
"result": "401",
"resultMessage": "로그인이 필요합니다."
} |
aggregation
하나 이상의 apiConfig를 이용하여 여러 API를 조합하여 실행할지를 결정
false
이면 root 설정 필수
true
이면 config 설정 필수
root
aggregation이 false인 경우 단독 apiConfig 설정
Code Block | ||
---|---|---|
| ||
{
"typeId": "api",
"category": "product",
"apiId": "read",
"apiName": "상품 조회",
"apiType": "service",
"method": "GET",
"parameters": [
],
"aggregation": false,
"root": {
"configId": "root",
"tid": "siteProduct",
"type": "query",
"resultType": "OBJECT",
"query": [
{
"method": "matching",
"field": "id",
"value": "{{:productId}}"
}
],
"response": [
]
}
} |
config
aggregation이 true인 경우 다중 apiConfig 설정
Code Block | ||
---|---|---|
| ||
{
"typeId": "api",
"category": "product",
"apiId": "read",
"apiName": "상품 조회",
"apiType": "service",
"method": "GET",
"parameters": [
],
"aggregation": true,
"config": [
{
"configId": "viewCount",
"tid": "product",
"type": "event",
"allowParams": false,
"orderNo": 1,
"event": "increaseViewCount"
},
{
"configId": "root",
"tid": "siteProduct",
"type": "query",
"resultType": "OBJECT",
"query": [
{
"method": "matching",
"field": "id",
"value": "{{:productId}}"
}
],
"response": [
]
}
]
} |
parameters
API 파라미터 설정은 호출하는 파라미터를 제한하고 필수 파라미터를 정의한다.
pid | valueType | description |
---|---|---|
id | INT | 자동 생성 아이디 |
parameter | STRING | 호출 파라미터 |
name | STRING | 파라미터 명칭 |
required | BOOLEAN | 필수 여부 |
valueType | CODE | 파라미터 값 유형(String, Number, File, Object, Array) |
description | TEXT | 설명 |
Sample "required": true
Code Block |
---|
{
"typeId": "api",
"category": "product",
"apiId": "read",
"apiName": "상품 조회",
"apiType": "service",
"method": "GET",
"parameters": [
{
"parameter": "productId",
"name": "상품ID",
"valueType": "STRING",
"required": true
}
]
} |
Code Block |
---|
{
"result": "400",
"resultMessage": "Required Parameter : productId"
} |