提问人:Paul Rodgers 提问时间:3/26/2022 最后编辑:Paul Rodgers 更新时间:3/26/2022 访问量:291
RESTful API,用于同时按两个模型进行筛选
RESTful API for filtering by two models simultaneously
问:
假设我有两个模型,并且 .我实现了一个 API,可让您对两者进行筛选:Order
Customer
/orders?status=fulfilled
/customers?city=Atlanta
但是,如果我想搜索处于已发货状态的订单,而其关联客户也住在亚特兰大,该怎么办?做这样的事情是 RESTful 吗?或者有没有规范的格式来做这种事情?/orders?status=fulfilled&customer.city=Atlanta
答:
0赞
VoiceOfUnreason
3/26/2022
#1
做类似 /orders?status=fulfilled&customer.city=Atlanta 之类的事情是 RESTful 吗?
是的。
有没有规范的格式来做这种事情?
不。
通常需要选择与标准化 URI 模板兼容的资源标识符,因为这样可以利用预先存在的库。
但是,有很多不同的方法可以将变量扩展到模板中。
由 application/x-www-form-urlencoded 键值对组成的查询部分是常见的选择;它使您“免费”与HTML表单兼容。但是,如果您不希望客户端通过网页与您的 API 进行交互,那么这可能不太重要。
URI 拼写很像变量名称的拼写;机器不在乎。因此,您拥有额外的自由度,可以利用它来使某些人的生活更轻松:您的客户查看其浏览历史记录中的标识符,您的操作人员查看日志,您的技术作家试图记录 API......
你可能希望选择一些对自己方便的东西 - 所以要确保你的设计与你的路由框架非常吻合。
选择标识符拼写,将这些请求定向到您已经在使用的相同控制器和新控制器 - 这完全取决于您。API 的部分要点是实现细节对客户端是隐藏的,并且可以在不破坏接口的情况下进行更改。
评论