ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSend
    etc 2021. 3. 24. 16:23

    github.com/omniti-labs/jsend

     

    omniti-labs/jsend

    JSend is a specification for a simple, no-frills, JSON based format for application-level communication. - omniti-labs/jsend

    github.com


    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
킹수빈닷컴