...
응답 형태(array, object, none, page)
type별 >>type별 resultType defulat ?defulat<<type별
>>type별 사용가능 resultType ?resultType<<
cacheable
API 요청에 대하여 응답결과를 캐시에 저장하고 설정한 시간동안 캐시 데이터를 반환한다.
default : false
캐시에 저장하려면 캐시키를 구성하기 위한 한개이상의 파라미터 쿼리 검색어가 필요하다.
cacheKey 란?
캐시에 저장할 response에 대한 유일키. api와 파라미터 쿼리를 조합하여 키가 만들어진다.
api::snack>list?&name.matching=오레오
cache hit out log
...
api::snack>list?&name.matching=오레오
...
cacheKey api::snack>list?&name.matching=오레오
에 대하여 아래 response가 캐시에 저장된다.
Code Block |
---|
{{protocol}}://{{hostname}}:{{port}}/svc/snack/list?_siteId=bestshop&name=오레오 { "result": "200", "resultMessage": "SUCCESS", "totalCount": 1, "totalTypeCount": 20, "resultCount": 1, "items": [ { "id": "103", "label": "오레오", "name": "오레오" } ] } |
...
cache hit out log
Code Block |
---|
n.ion.ice.core.context.ContextUtils : cache hit fail : api::snack>list?&name.matching=오레오 |
"cacheable": true
이면 아래 항목 설정 가능
cacheTime
캐시 시간(초)
캐시 시간이 도래하면 캐시가 삭제된다.
...
주기적으로 호출하여 캐시를 유지 시킨다.
>>얼만큼의 주기인지 확인 <<예정<<
excludeCacheKey
캐시키에서 제외할 파라미터 목록(예: timeStamp,userId)
...
readTimeout
failOver
compensatingAPI
customResponse
apiConfig 동작의 응답 결과를 조작할 수 있다.
추가적인 처리가 필요한 경우 해당 서비스 정의를 해야한다.
아래는 응답결과에 idx 필드를 추가하는 사례이다.
implements CustomResponse
하는 class 를 하나 작성한다.
subList : apiConfig 동작의 응답 결과 리스트
Code Block |
---|
@Component("sampleResponse")
public class SampleResponse implements CustomResponse {
@Override
public List<QueryResult> execute(QueryContext queryContext, List<QueryResult> subList) {
int idx = 1;
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 설정에서의 응답 항목은 다음과 같이 정의한다.
...