2014-02-08 3 views
4

При использовании любой структуры REST (трикотаж, resteasy, spring-mvc) большую часть времени (постоянные) классы моделей не совпадают с представлениями ресурсов REST. Даже в большинстве случаев входящее json-представление (например, создание и обновление) отличается от исходящего json-представления (например, list, get, ..).Ищите рекомендации для соглашений об именах для разных представлений ресурсов REST

Я ищу несколько хороших соглашений об именах, чтобы разобраться в этом.

Пример структуры:

+-- my.comp.domain.Customer 
+-- my.comp.rest.resource.CustomerResource (or CustomerController) 

CustomerResource будет внутренне использовать Клиента сохраняться и извлечения данных. Но снаружи (объекты Request + Response) он будет использовать немного другую структуру.

То, что я сейчас:

+-- my.comp.rest.representation.CustomerRequest 
+-- my.comp.rest.representation.SimpleCustomerResponse 
+-- my.comp.rest.representation.SimpleCustomerCollectionResponse 
+-- my.comp.rest.representation.ExtendedCustomerResponse 

Это в основном простой POJO, содержащий только поле. Используемая структура REST будет использовать их для преобразования в json.

Кто-нибудь еще использует разные названия? Я открыт для предложений.

ответ

0

Вместо того, чтобы иметь запрос, ответ как отдельный пытается использовать общее базовое представление для представления большинства и добавлять дополнительные на основе потребностей.

POST/клиентов/- класс может быть 'CustomerRepresentation/CustomerContract/CustomerRp/representation.CustomerModel'

GET/клиентов/{ID} - Туда же CustomerRepresentation или выше

PUT - такой же, как хорошо

GET/клиенты/- CustomerListRepresentation или же

Ссылка может быть присоединена к своим соответствующим объектам в качестве необязательных вещей для создания.

Пожалуйста, дайте мне знать ваши мысли.

+0

Когда вы возвращаете список, когда вы не проходите идентификатор клиента, тогда ваш URL должен описывать список i.e GET/customers –

+0

в противном случае GET/customer/{id} –

+0

Обновлен URL-адрес для всех случаев. Не нужно различать их на основе единственного числа/множественного числа, этого будет достаточно, чтобы определить все из них, чтобы сделать api простым. Каждый человек должен сделать свой выбор, а не путать слишком много соглашений. – DarkKnight

Смежные вопросы