Versions Compared

Key

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

공지사항 게시판을 만들어 보자..

...

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
languagejson
[
  {
    "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
colourYellow
titlefront
/svc/

Status
colourGreen
titleADMIN
/adm/

Status
colourGreen
titleFront
공지사항 리스트

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 응답결과의 필드를 지정할수도 있고, 모든 필드를 반환할 수도 있다.

"response": [
Code Block
languagejson
{
    "fieldtypeId": "idapi",
    "typecategory": "fieldnotice",
    "valueapiId": "list"
  },
  {     "fieldapiName": "title공지사항 리스트",
    "typeapiType": "fieldservice",
    "valuemethod": "GET",
  }  ]
Code Block
"responseparameters": [
  {     "field": "_all_",
    "type": "all"
  }
]

...

languagejson

...

],
    "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
titleFront
공지사항 조회

...

languagejson

statusApiType

  • service : context path “svc”를 사용

Params

  • title

...

  • sorting

...

  • page

...

  • pageSize

...

languagejson

Status
titleFront
공지사항 조회

...

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
colourYellow
titleFront
공지사항 조회

Info

GET {{protocol}}://{{hostname}}:{{port}}/svc/notice/read

Api Schema

Code Block
languagejson
{
    "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
colourGreen
titleadmin
공지사항 리스트

Info

GET {{protocol}}://{{hostname}}:{{port}}/adm/notice/boardList

Code Block
languagejson
{
    "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
colourGreen
titleadmin
공지사항 상태변경

Info

POST {{protocol}}://{{hostname}}:{{port}}/adm/notice/updateStatus

Api Schema

Code Block
languagejson
{
    "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
colourGreen
titleadmin
공지사항 상태변경

Info

POST {{protocol}}://{{hostname}}:{{port}}/adm/notice/updateStatus

Api Schema