2014-09-23 3 views
2

우리는 현재 데이터의 두 가지 유형을 반환 할 수있는 엔드 포인트의 하나 같은 REST 인프라를 논의하고 있습니다 :REST 엔드 포인트 반환 여러 JSON 유형

:이 물건을 찾을 수없는 경우

가 이런 식으로 뭔가를 반환 이 데이터를 찾을 수 있다면

{ 
    "key1": "value1", 
    "key2": "value2" 
} 

는,이 같은 반환 :이 매우 REST-가득 생각하지 않는다

{ 
    "key3": "value3", 
    "key4": [ { 
     "key5": "value5", 
     "output":  [ 
        { 
      "name": "value6", 
      "value": "value7" 
     }, 
        { 
      "name": "value8", 
      "value": 0 
     } 
     ] 
    }] 
} 

을,하지만 난 REST 디자인에 비교적 새로운 해요.

이러한 응답을 디자인하는 방법에 대한 지침은 무엇이 있습니까?

+0

나는 [이] 생각 (http://stackoverflow.com/questions/18781775/how-to-send-the-json-data-in-rest-web-services) 도움이 될 것입니다. – cbandroid

답변

2

많은 의견이 있습니다. 내 생각에 어떤 물건도 찾을 수 없다면 404을 돌려 주겠다. 하나 이상의 오브젝트를 찾으면 오브젝트가 들어있는 본문으로 200을 리턴합니다.

200 본체 응답으로 해당 개체를 구조화하는 방법은 사용자에게 달려 있습니다. 내가 선호하는 것은 항상 단일 항목에 대한 직선 JSON 객체 또는 다중에 대한 배열이다. 여기

일부 예 :

GET /api/users/20000000 복귀 [{"name":"John Smith","id":"1","email":"[email protected]"},{"name":"Jill Smith","id":"2","email":"[email protected]"},{"name":"Someone Else","id":"3","email":"[email protected]"}] (참고 배열 형식)의 본체와 {"name":"John Smith","id":"1","email":"[email protected]"}

GET /api/users 복귀 200의 몸 404

GET /api/users/1 복귀 200

참고 [{"name":"John Smith","id":"1","email":"[email protected]"},{"name":"Jill Smith","id":"2","email":"[email protected]"}] (참고 배열 형식)의 몸 (210 개) GET /api/users/1,2 반환 200, 나는 특급 프로젝트 같은 것을 구현했다, 그래서 나는 부스터로 표준화 http://github.com/deitch/booster

+0

자바 스크립트 영역에 있지 않아서 부스터를 사용할 수 없습니다. 귀하의 답변은 사물 정리 방법에 대한 내부 논의를 통해 저를 도왔습니다. 매우 감사. 한 가지 더 : 다음 댓글을보십시오. –

+1

사용자가 어떤 속성도 가지고 있지 않다면 어떻게 할 것입니까? (예 : API에서 반환 된 객체는 비어있을 수 있습니다) : 단지'[{}]'를 돌려 주시겠습니까? 그리고 왜 '{...}'과'[{...}, {...} '인지를 구별하는 이유는 무엇입니까? 항상 [{{...}]와 같은 배열을 반환하지 않는 이유는 무엇입니까? –

+0

글쎄, 그럼, 나는 그것이 (예기치 않은 방식으로) 도움이되었다고 기쁘다. :-) – deitch