我为搜索用户提供了一种REST方法。现在我正在使用以下REST方法签名:
MyResponse GetUsers(UserSearchDTO search, int pageno, int totalrecords);
即它接受UserSearchDTO
,pageno和totalrecords param的一个对象。该网址将如下所示
myapp/users?pageno={pageno}&totalrecords={totalrecords}
最终客户端将发送此服务的“PUT”请求,如:
myapp/users?pageno=1&totalrecords=10
以及它将传递UserSearchDTO发布的xml数据,如
<UserSearchDTO><Department>d</Department><Name>abc</Name></UserSearchDTO>
这是一个很好的架构,即为了让用户使用“PUT”请求类型。这样做的原因是因为最终客户端必须以xml格式传递UserSearchDTO?
我想的另一种方法是纯粹的“GET”,即不使用UserSearchDTO
我应该有以下签名:
MyResponse GetUsers(string department,string name,...., int pageno, int totalrecords);
并且终端客户端将其称为: myapp / users?department = d&amp; name = abc&amp; ......&amp; pageno = 1&amp; totalrecords = 10
答案 0 :(得分:0)
我正在编写我的第一个REST服务,所以我不是专家,但在我看来,我认为最好使用GET请求,因为这正是你正在做的事 - 获取数据从服务器。这将使其他开发人员更容易支持该应用程序,而不是试图弄清楚为什么使用PUT进行基本数据检索。
如果可能,我建议您尝试将UserSearchDTO XML作为字符串在客户端上转换并将其作为字符串传递给GetUsers方法,然后将该字符串加载到服务器上的XmlDocument()中并将其解析为DTO 。然后您的方法签名将如下所示:
MyResponse GetUsers(string userSearchXmlString, int pageno, int totalrecords);
答案 1 :(得分:0)
看起来你正在使用WCF REST。使用WCF REST,您必须自己实现查询机制。您是否考虑过使用ASP.NET Web API?在Web API中,您的GetUsers()
方法只需返回IQueryable<User>
,并使用OData querying capability对其进行Web API包装,以便为您处理投影,过滤,排序,聚合和分页。