Restful Web Services&多种退货类型

时间:2015-10-13 16:16:39

标签: asp.net rest

我正在使用Visual Studio WebAPI解决方案模板构建我的第一个Restful Web服务。对于我的模型,我有一个Customer类,其中包含以下字段:

  • CustomerID
  • FirstName
  • 姓氏
  • 电子邮件
  • Street1
  • City1
  • State1
  • 国家1
  • ZipCode1
  • Street2
  • City2
  • State2
  • Country2
  • ZipCode2

根据我们的要求,我需要以下方法并返回数据:

  • GetCustomerFromID - 返回所有客户字段
  • GetCustomerEmailFromID - 返回电子邮件
  • GetCustomerMainAddress - 返回Street1,City1,State1,Country1,ZipCode1
  • GetCustomerSecondAddress - 返回Street2,City2,State2,Country2,ZipCode2

因此,我构建了一个名为CustomerController的Controller,它包含这些方法,并在所有4种方法中返回一个Customer对象。使用此方法,GetCustomerFromID返回一个Customer对象,其中所有字段都包含值。但是,GetCustomerEmailFromID返回的Customer对象只有一个字段值,其余为NULL。

这种方法是否正常,或者是否有更好的方法/最佳实践,我只返回每种方法所需的字段?

谢谢

1 个答案:

答案 0 :(得分:0)

你的方式感觉很重 - 因为你有一堆端点用于同一资源的切片。

雅虎使用他们所谓的观点:

  

资源可能会提供相同数据的不同视图。要指定   在视图中,将视图查询参数附加到URI。例如,到   检索GUID 4467用户的联系人的微小视图,调用   以下URI上的HTTP GET:

     

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

     

请注意,view参数仅适用于singleton(不是   收集)资源。

另一个很好的资源Apigee比较了几个大的提供者(http://apigee.com/about/blog/technology/restful-api-design-can-your-api-give-developers-just-information-they-need

  • 已关联:/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