apiConfig는 실제 API 동작을 정의하는데 사용하며, configId
에 따라서 API Response 형태가 결정된다.
...
추가적인 처리가 필요한 경우 해당 서비스 정의를 해야한다.
Expand |
---|
title | 아래는 응답결과에 idx 필드를 추가하는 사례이다. |
---|
|
implements CustomResponse 하는 class 를 하나 작성한다.
Code Block |
---|
| @Component("sampleResponse")
public class SampleResponse implements CustomResponse {
@Override
public List<QueryResult> execute(QueryContext queryContext, List<QueryResult> subList) {
int idx = 1;
//subList : apiConfig 동작의 응답 결과 리스트
for(QueryResult item : subList){
item.put("idx", idx++);
}
return subList;
}
@Override
public Map<String, Object> execute(ReadContext readContext, Map<String, Object> itemResult) {
return itemResult;
}
} |
apiConfig에 customResponse 설정 Code Block |
---|
{
"typeId": "api",
"category": "snack",
"apiId": "list",
"apiName": "snack List",
"apiType": "service",
"method": "GET",
"parameters": [
],
"statistic": true,
"aggregation": false,
"root": {
"configId": "root",
"tid": "snack",
"type": "query",
"allowParams": true,
"customResponse": "sampleResponse",
"query": [
],
"response": [
{
"field": "_all_",
"type": "all"
}
]
}
} |
api 응답결과에 idx가 추가된것을 볼수 있다. Code Block |
---|
{{protocol}}://{{hostname}}:{{port}}/svc/snack/list?_siteId=bestshop&limit=2
{
"result": "200",
"resultMessage": "SUCCESS",
"totalCount": 20,
"totalTypeCount": 20,
"resultCount": 2,
"more": true,
"moreCount": 10,
"items": [
{
"id": "104",
"label": "쿠크다스",
"name": "쿠크다스",
"idx": 1
},
{
"id": "103",
"label": "오레오",
"name": "오레오",
"idx": 2
}
]
} |
|
response
API 설정에서의 응답 항목은 다음과 같이 정의한다.
...
| Query | Event | Select | Relay | Read | Reads | | Method | Process | Response |
---|
id | | | | | | | | | | |
targetId | | | | | | | | | | |
configId | | | | | | | | | | |
type | | | | | | | | | | |
tid | O | O | | | O | O | O | | | |
resultType | | | | | | | | | | |
relayUrl | | | | O | | | | | | |
relayMethod | | | | O | | | | | | |
datasource | | | O | | | | | | | |
sql | | | O | | | | | | | |
method | | | | | | | | O | | |
process | | | | | | | | | O | |
cacheable | | | | | | | | | | |
cacheTime | | | | | | | | | | |
keepCache | | | | | | | | | | |
excludeCacheKey | | | | | | | | | | |
allowParams | | | | | | | | | | |
if | | | | | | | | | | |
connectTimeout | | | | | | | | | | |
readTimeout | | | | | | | | | | |
customFilter | O | | | | | | | | | |
customResponse | | | | | | | | | | |
event | | O | | | | | | | | |
failOver | | | | | | | | | | |
compensatingAPI | | | | | | | | | | |
query | O | | | | | | | | | |
data | | O | O | | O | O | | | | |
relayType | | | | O | | | | | | |
relayAuth | | | | O | | | | | | |
| | | | O | | | | | | |
bodyType | | | | O | | | | | | |
relayParameters | | | | O | | | | | | |
relayBody | | | | O | | | | | | |
response | | | | | | | | | | |
orderNo | | | | | | | | | | |