-
JSend ?
JSend는 웹 서버의 JSON 응답 형식을 지정하는 방법에 대한 몇 가지 규칙을 규정 한 사양이다.
JSON 데이터를 제공하는 많은 웹 서비스가 있고, 각각 고유한 형식의 응답 형식이 있다. 근데, 데이터를 구성하는 데는 공통적인 패턴은 많이 있지만, naming 또는 types of response 와 같은 항목에는 약속이 없다.
또한 모든 사람이 서로 상호 작용하는 일반적인 접근 방식을 기대할 수 있기 때문에 상호간의 통일성을 개선하는데 도움이 된다.
성공 -> status, data
실패 -> status, data
에러 -> status, message
어떤식으로 사용되는지 예시
Success example
// GET /posts.json { status : "success", data : { "posts" : [ { "id" : 1, "title" : "A blog post", "body" : "Some useful content" }, { "id" : 2, "title" : "Another blog post", "body" : "More content" }, ] } }
// GET /posts/2.json { status : "success", data : { "post" : { "id" : 2, "title" : "Another blog post", "body" : "More content" }} }
// DELETE /posts/2.json { status : "success", data : null }
Required keys:
- stats: "success"
- data: 반환한 모든 데이터를 감싸는 역할을 한다. DELETE 와 같이 반환되는 데이터가 없으면 null로 설정한다.
Fail example
// POST /posts.json (with data body: "Trying to creating a blog post"): { "status" : "fail", "data" : { "title" : "A title is required" } }
유효하지 않은(not validates) 데이터 또는 호출 조건으로 인해 API 호출이 거부되면 JSend 오브젝트의 data key에는 일반적으로 유효성 검증 오류의 hash 와 같이 잘못된 사항을 설명하는 객체가 포함됩니다.
Required keys:
- status: "fail"
- data: 요청이 실패한 이유를 제공한다. 이때 실패 이유가 POST vlaues 에 해당하는 경우, response 객체의 Key 는 해당 POST 값에 해당해야 한다.
Error example
// GET /posts.json { "status" : "error", "message" : "Unable to communicate with database" }
Required keys:
- status: "error"
- message: 무엇이 잘못되었는지에 대한 message가 있고, 최종 사용자가 읽을 수 있는 메시지
Optional keys:
- code: 오류에 해당 하는 상태 코드 (404, 500 ...)
- data: 오류에 대한 정보 (발생된 원인 부분, stack traces ...)
'etc' 카테고리의 다른 글
문자 인코딩과 유니코드 (0) 2021.04.18 yaml 설정파일 값 사용하기 (0) 2021.04.01 trailing commas (0) 2021.03.21 REST API 설계 가이드 (0) 2021.03.19 Forward, Redirect (0) 2021.03.04