공지사항 게시판을 만들어 보자..
...
GET {{protocol}}://{{hostname}}:{{port}}/node/nodeType/noticeBoard
GET {{protocol}}://{{hostname}}:{{port}}/node/nodeType/read.json?id=noticeBoard
GET {{protocol}}://{{hostname}}:{{port}}/node/nodeType/list.json?id_matching=noticeBoard
GET {{protocol}}://{{hostname}}:{{port}}/node/propertyType/list.json?tid_matching=noticeBoard
...
Code Block | ||
---|---|---|
| ||
[ { "typeId": "apiCategory", "id": "notice", "categoryName": "Notice Board API", "dateFormat": "yyyy-MM-dd HH:mm:ss", "fileUrlFormat": { "default": "{{:getEnvValue('core.cluster.api-url-prefix')}}" }, "commonParameters": [ { "parameter": "apiKey", "required": false } ], "commonResponse": [ { "field": "time", "type": "field", "value": "{{:sysdate}}" } ] } ] |
...
Api Context
Status | ||||
---|---|---|---|---|
|
Status | ||||
---|---|---|---|---|
|
Status | ||||
---|---|---|---|---|
|
Info |
---|
GET {{protocol}}://{{hostname}}:{{port}}/svc/notice/list |
ParamsApi Schema
...
Code Block |
---|
...
page
...
pageSize
Config
type : query
cacheable : true / cacheType : 60 → API 결과를 60초간 캐싱
Response
아래와 같이 api 응답결과의 필드를 지정할수도 있고, 모든 필드를 반환할 수도 있다.
Code Block | ||
---|---|---|
| ||
{ "fieldtypeId": "idapi", "typecategory": "fieldnotice", "valueapiId": "list" }, { "fieldapiName": "title공지사항 리스트", "typeapiType": "fieldservice", "valuemethod": "GET", } ] | ||
Code Block | ||
"responseparameters": [ { "field": "_all_", "type": "all" } ] |
...
language | json |
---|
...
], "config": [ { "configId": "root", "tid": "noticeBoard", "type": "query", "allowParams": false, "orderNo": 1, "cacheable": true, "cacheTime": 60, "query": [ { "method": "matching", "field": "enable", "value": "true" }, { "method": " |
...
matching", " |
...
field": |
...
"title", "value": "{{:title}}" }, { "method": "sorting", "value": "{{:sorting}},id desc" }, { "method": "page", "value": "{{:page}}" }, { "method": "pageSize", "value": "{{:pageSize}}" } ], "response": [ { "field": "id", "type": "field", "value": "" }, { "field": "title", "type": "field", "value": "" }, { "field": "owner", "type": "field", "value": "" }, { "field": "created", "type": "field", "value": "" } ] } ] } |
Status | ||
---|---|---|
|
...
language | json |
---|
statusApiType
service : context path “svc”를 사용
Params
title
...
sorting
...
page
...
pageSize
...
language | json |
---|
Status | ||
---|---|---|
|
...
Config
type : query → noticeBoard 에 query 검색
cacheable : true / cacheType : 60 → API 결과를 60초간 캐싱
Response
아래와 같이 api 응답결과의 필드를 지정할수도 있고, 모든 필드를 반환할 수도 있다.
Code Block |
---|
"response": [
{
"field": "id",
"type": "field",
"value": ""
},
{
"field": "title",
"type": "field",
"value": ""
}
] |
Code Block |
---|
"response": [
{
"field": "_all_",
"type": "all"
}
] |
Api Result
Code Block |
---|
{
"result": "200",
"resultMessage": "SUCCESS",
"totalCount": 2,
"totalTypeCount": 2,
"resultCount": 2,
"pageSize": 10,
"pageCount": 1,
"currentPage": 1,
"items": [
{
"id": 1716647245,
"title": "공지합니다. (수정)",
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "2020-07-30 15:38:09"
},
{
"id": 429034766,
"title": "ID 있으면 update, 없으면 create",
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "2020-07-30 15:40:11"
}
]
} |
Paging
Param 으로 page, pageSize 가 들어오면 페이징 처리
Response 응답 결과에 페이징 관련 필드 함께 내려옴
totalCount : 검색된 결과 페이징 제외된 순수 카운트
totalTypeCount : noticeBoard nodeType의 데이터 노드리스트 카운트
resultCount : Response 결과 카운트
pageSize : 페이징 기준 사이즈
pageCount : 페이징 된 페이지 건수
currentPage : 현재 페이지 번호
Code Block |
---|
{
"result": "200",
"resultMessage": "SUCCESS",
"totalCount": 38,
"totalTypeCount": 489,
"resultCount": 10,
"pageSize": 10,
"pageCount": 4,
"currentPage": 1,
"items": [
{
"id": 1716647245,
"title": "공지합니다. (수정)",
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "2020-07-30 15:38:09"
}
...
]
} |
Status | ||||
---|---|---|---|---|
|
Info |
---|
GET {{protocol}}://{{hostname}}:{{port}}/svc/notice/read |
Api Schema
Code Block | ||
---|---|---|
| ||
{
"typeId": "api",
"category": "notice",
"apiId": "read",
"apiName": "공지사항 조회",
"apiType": "service",
"method": "GET",
"parameters": [
{
"parameter": "id",
"name": "ID",
"valueType": "STRING",
"required": true
}
],
"config": [
{
"configId": "root",
"tid": "noticeBoard",
"type": "query",
"resultType": "OBJECT",
"allowParams": false,
"orderNo": 1,
"cacheable": true,
"cacheTime": 60,
"query": [
{
"method": "matching",
"field": "enable",
"value": "true"
},
{
"method": "matching",
"field": "id",
"value": "{{:id}}"
}
],
"response": [
{
"field": "_all_",
"type": "all"
}
]
}
]
} |
ApiType
service : context path “svc”를 사용
Parameters
id (required)
Config
resultType : OBJECT
query list 결과 ArrayList [ ] 를 Object { } 로 반환
Api Result
Code Block |
---|
{
"result": "200",
"resultMessage": "SUCCESS",
"item": {
"id": 1716647245,
"label": "공지합니다. (수정)",
"title": "공지합니다. (수정)",
"content": "내용내용 ",
"file": "http://local.i-on.net:8080/noticeBoard/file/202007/30/143f2cdb-da84-4794-8817-2d0b2f0de994.png",
"enable": true,
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "2020-07-30 15:38:09",
"modifier": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"changed": "2020-07-30 15:38:09"
}
} |
Status | ||||
---|---|---|---|---|
|
Info |
---|
GET {{protocol}}://{{hostname}}:{{port}}/adm/notice/boardList |
Code Block | ||
---|---|---|
| ||
{
"typeId": "api",
"category": "notice",
"apiId": "boardList",
"apiName": "공지사항 리스트",
"apiType": "admin",
"method": "GET",
"parameters": [
],
"config": [
{
"configId": "root",
"tid": "noticeBoard",
"type": "query",
"allowParams": false,
"orderNo": 1,
"cacheable": false,
"query": [
{
"method": "matching",
"field": "enable",
"value": "{{:enable}}"
},
{
"method": "matching",
"field": "title",
"value": "{{:title}}"
},
{
"method": "sorting",
"value": "{{:sorting}},id desc"
},
{
"method": "page",
"value": "{{:page}}"
},
{
"method": "pageSize",
"value": "{{:pageSize}}"
}
],
"response": [
{
"field": "id",
"type": "field",
"value": ""
},
{
"field": "title",
"type": "field",
"value": ""
},
{
"field": "title",
"type": "field",
"value": ""
},
{
"field": "owner",
"type": "field",
"value": ""
},
{
"field": "created",
"type": "field",
"value": ""
}
]
}
]
} |
ApiType
admin : context path “adm”을 사용
/svc/ 로 call하면 아래와 같다.
Code Block |
---|
{
"result": "500",
"resultMessage": "지원하지 않는 API Type 입니다. : admin"
} |
Params
enable
title
sorting
page
pageSize
Config
type : query
cacheable : false → API 결과를 캐싱하지 않음. 캐시 딜레이 없이 관리자가 실시간으로 조회 처리 가능.
Status | ||||
---|---|---|---|---|
|
Info |
---|
POST {{protocol}}://{{hostname}}:{{port}}/adm/notice/updateStatus |
Api Schema
Code Block | ||
---|---|---|
| ||
{
"typeId": "api",
"category": "notice",
"apiId": "updateStatus",
"apiName": "공지사항 상태 변경",
"apiType": "admin",
"method": "POST",
"parameters": [
{
"parameter": "id",
"name": "ID",
"valueType": "STRING",
"required": true
},
{
"parameter": "enable",
"name": "사용 여부",
"valueType": "STRING",
"required": true
}
],
"config": [
{
"configId": "root",
"tid": "noticeBoard",
"type": "event",
"allowParams": false,
"orderNo": 1,
"event": "update",
"data": [
{
"field": "id",
"value": "{{:id}}"
},
{
"field": "enable",
"value": "{{:enable}}"
}
]
}
]
} |
Params
id
enable
Config
type : event → noticeBoard 의 event call
event : update
data에 params 를 셋해서 update 실행
Api Result
Code Block |
---|
{
"result": "200",
"resultMessage": "SUCCESS",
"item": {
"id": "1716647245",
"lable": "공지합니다. (수정)",
"title": "공지합니다. (수정)",
"content": "내용내용 ",
"file": "http://local.i-on.net:8080/noticeBoard/file/202007/30/143f2cdb-da84-4794-8817-2d0b2f0de994.png",
"enable": false,
"owner": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"created": "2020-07-30 15:38:09",
"modifier": {
"value": "anonymous",
"label": "Anonymous User",
"refId": "user::anonymous"
},
"changed": "2020-07-30 17:19:55"
}
} |
Status | ||||
---|---|---|---|---|
|
Info |
---|
POST {{protocol}}://{{hostname}}:{{port}}/adm/notice/updateStatus |
Api Schema