apiConfig는 실제 API 동작을 정의하는데 사용하며, configId
에 따라서 API Response 형태가 결정된다.
...
추가적인 처리가 필요한 경우 해당 서비스 정의를 해야한다. title Expand
아래는 응답결과에 idx 필드를 추가하는 사례이다.
Class 추가
implements CustomResponse
하는 class 를 하나 생성한다.
@Component 어노테이션 추가
@Component("sampleResponse")
customResponse 작성
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 세팅
@Component 어노테이션 명으로 작성한다.
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 | Form | 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 | |||||||||
relayHeader | O | |||||||||
bodyType | O | |||||||||
relayParameters | O | |||||||||
relayBody | O | |||||||||
response | ||||||||||
orderNo |