我正在编写一个PHP的RESTful Web服务(没有特殊的框架,但使用PDO Prepared Statements),它使用和返回JSON数据。我遇到的问题是需要某种方式来更详细地指定GET请求应返回的内容。我想我理解如何完成我想要的东西,但我不确定我的方式是否符合真正的REST原则。我想知道是否有一些标准的方法来处理下面列出的问题。
到目前为止,我发现的大多数(或者全部)示例假设每个域/实体/资源基本上有两个标准GET请求,如下所示:
GET /api/users/ //Returns a collection of all users
GET /api/users/1/ //Returns all data for a single userid
似乎我们需要更多的选择而不仅仅是这个。当然,我们不会在第一次请求时返回所有用户的所有数据,因为可能有数千个用户。因此,我们需要限制返回的记录数量,并且可能还应返回哪些字段,具体取决于调用应用程序的上下文。
然后你有一个问题,你构建一个搜索的UI,所以我们需要能够处理搜索的一些传入参数,并可能输出像UserID,Username,FirstName,Lastname等。 ,而不是输出所有字段。
然后我们有一个案例,我们想要传入一个电子邮件地址并取回用户ID。
似乎所有这些情况都需要一些我在其他Web服务示例中通常看不到的其他参数。
GET /api/users/?max=100&firstname=mike
//Returns a collection of up to 100 users who have the first name mike
GET /api/users/1/
//Returns all data for a single userid
GET /api/users/?get=userid&email=someone@microsoft.com
//If found, returns the userid for the corresponding email address
我不确定我在这里显示的网址格式是否合适,但这确实超出了我实际问题的范围。
我真正想知道的是,当您需要能够使用各种参数(例如要返回的记录数,上下文(或动词)来确定数据时,应该如何编写Web服务)要返回哪些字段,以及应该用于缩小结果集的搜索参数?