2015-10-13 7 views
1

Я создаю свои первые Restful Web Services, используя шаблон решения Visual Studio WebAPI. Для моей модели, у меня есть один класс Customer со следующими полями:Restful Web Services & Multiple Return Types

  • КодКлиента
  • FirstName
  • LastName
  • Email
  • Street1
  • City1
  • State1
  • стране1
  • Почтовый индекс Code1
  • Street2
  • City2
  • State2
  • COUNTRY2
  • ZipCode2

Исходя из наших требований, мне нужны следующие методы и возвращают данные:

  • GetCustomerFromID - возвращает все Поля клиента
  • GetCustomerEmailFromID - возвращает Отправить по электронной почте
  • GetCustomerMainAddress - возвращает Street1, City1, State1, стране1 ZipCode1
  • GetCustomerSecondAddress - возвращает Street2, City2, State2, COUNTRY2, ZipCode2

Поэтому я построил один контроллер под названием CustomerController, который содержит эти методы и возвращает объект Customer во всех 4 методах. При таком подходе GetCustomerFromID возвращает объект Customer со всеми полями, содержащими значение. Однако GetCustomerEmailFromID возвращает объект Customer только с одним значением поля, а остальные - NULL.

Этот подход подходит, или есть лучший подход/наилучшая практика, когда я возвращаю только поля, необходимые для каждого метода?

Спасибо

ответ

0

Ваш путь кажется тяжелым - потому что у вас есть куча конечных точек для срезов одного и того же ресурса.

Yahoo использует то, что они называют просмотров:

Ресурс может обеспечить различные представления одних и тех же данных. Чтобы указать вид , добавьте параметр запроса просмотра в URI. Например, чтобы получить крошечный вид контактов для пользователя GUID 4467, вызовите HTTP GET на следующий URI:

https://social.yahooapis.com/v1/user/4467/contacts?view=tinyusercard

Обратите внимание, что параметр вида относится только к одноточечному (не коллекции) Ресурсы.

Еще один хороший ресурс Apigee имеет несколько крупных провайдеров по сравнению (http://apigee.com/about/blog/technology/restful-api-design-can-your-api-give-developers-just-information-they-need)

  • Linked In: /people:(id,first-name,last-name,industry)
  • Facebook: /joe.smith/friends?fields=id,name,picture
  • Google: /dogs?fields=name,color,location

Я много предпочитают подобные API.

Дополнительная помощь здесь: How to do partial responses using ASP.Net Web Api 2