2013-10-09 2 views
0

REST 규칙을 따르지 않는 문제가 있다고 생각한 상황에 부딪혔다. 나는 목록을 검색하는 GET을 수행 할 때이를 고려하시기 바랍니다, 나는이 REST API를 내 마음에서REST get list method 컨테이너 클래스

http://localhost:8080/api/books 

를 통해 책 기록 작업을 허용하는 API를 가지고, 이것은 내가 기대하는 것입니다 :

[{"name":"some book name", 
     "price":"5" 
    }, 
    {"name":"second book", 
     "price":"100" 
    } 
    ] 

위의 JSON을 사용하면 Gson을 사용하여 객체 목록/배열로 쉽게 비 직렬화 할 수 있습니다. 그것은 반환하도록

그러나, 어떤 이유로이 API를 구현 :

{"books": [{"name":"some book name", 
       "price":"5" 
       }, 
       {"name":"second book", 
       "price":"100" 
       } 
       ] 
    } 

당신이 볼 수 있듯이, 지금 다음에 일련 화를 해제하고 "책"이라는 컨테이너 클래스를 사용할 필요가 I Books의 메소드 중 하나에서 책 배열을 가져옵니다.

더 많은 가치를 제공하지 않는 컨테이너 클래스를 사용하는 것은 좋지 않다고 생각하지만, 대형 시스템의 경우 REST API를 관리하는 데 전문가/경험이별로 없습니다. 그러므로 여러분 중 누군가가 이것이 완벽하게 괜찮은지 또는 문제의 징조인지 (가능한 경우 설명이 있음) 나를 계몽 할 수 있다면 크게 환영 할 것입니다.

답변

0

제 경험에서 보는 것은 정상적인 것입니다. 그것이 최선의 관행인지 여부는 의견의 문제입니다. 리소스가 책 항목 배열 또는 단일 서적 항목을 반환 할 것으로 기대하십니까? 어느 쪽이든 GSON/Jackson/Whatever와 함께 deserialise하기 쉽습니다. 때로는 목록 컨테이너에 다른 메타 데이터가 포함되어 있기 때문에 일부 결과가 반환되는 경우 총 개수와 같은 경우가 있습니다.

+0

내 질문에 내가 책의 목록을 얻을 수 있도록 그것을 사용하는 이외의 도서 클래스에 대한 사용하지 않는 것 같아요. 그래서 나는 왜 우리가 단지 그것을 할 수있을 때 우리가 그것을 필요로하는지 보지 못한다 List books = gson.fromJson (...); –

+0

리소스를 기대할 때, 목록이 필요합니다 (그리고 그것이 관례입니다, 아니오?). 그것이 하나의 책이라면 .../books/{id}를 사용하지 않습니까? 아마도 귀하의 의견을 이해하지 못하고 있습니다. –

+0

나는 당신이 이해하고 있다고 생각합니다. 나는 네가보기를 기대했던 것만 묻고 있었다. 나는 야생에서 두 가지 방법을 모두 보았다. 당신의 주장은 건전하지만 다른 사람들이 반대 할 수도 있습니다. – tom