Versions Compared

Key

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

...

응답 형태(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 설정에서의 응답 항목은 다음과 같이 정의한다.

...