javascript - 用于搜索和过滤的 REST API 独立端点
问题描述
我为一个简单的市场制作了一个 webapp。我有三个不同的功能:搜索、过滤、按键过滤。这些函数中的每一个都包含不同的查询参数。我的问题是我应该如何以休息的方式分离这些端点?
例如,这是我的搜索端点:
API.get('/product/',{params:querydata})
在搜索我得到这些查询参数:
{
skip: '0',
limit: '8',
searchTerm: '',
filters: '{"minPrice":1,"maxPrice":250000}'
}
但是当我使用过滤器功能时,查询参数会是这样的:
{
Color:'Red',
Type:'Car'
}
当我使用 keyfilter 功能时,我将拥有
{
filters:['red','black','bmw']
}
什么是正确的方法?在我使用 post 来区分过滤器和搜索之前,但现在我正在尝试转换为 rest api。提前致谢。
解决方案
我的问题是我应该如何以休息的方式分离这些端点?
什么是正确的方法?
对于所有这些,您应该使用 GET(请求的语义实际上是只读的),并将您需要的参数嵌入到 URI 的某处。参数应该在 URI 中的哪个位置很大程度上取决于您。
在网络上,我们通常希望选择能够轻松支持网络搜索表单的标识符,这通常意味着将参数描述为键值对列表,因此您最终会得到如下内容:
GET /product/?Color=Red&Type=Car
如果您不需要“正常工作”的 Web 表单,那么您有更多选择来构建资源标识符。您最好的选择是RFC 6570中描述的那些,因为支持 URI 模板的通用库已广泛可用。
从 REST 的角度来看,URI 的实际拼写并不重要,因此您可以选择最适合您需要的拼写。有取舍;您可能会发现您当前的框架更喜欢某些拼写而不是其他拼写,但是对于操作员阅读访问日志或创建从一个资源到另一个资源的相对引用来说,不同的拼写可能会更好。
很多可能性都很好,只要拼写与RFC 3986 中描述的生产规则一致,并且您不要尝试对两种不同的资源使用相同的标识符。
推荐阅读
- powerbi - Power Bi REST API -> 网关 -> 添加具有 ReadOverrideEffectiveIdentity 访问权限的数据源用户
- python - 解析 Asynchronous Amazon Transcribe Streaming SDK for Python 返回的说话者标签
- imageview - 在Android中使用加速度计时ImageView图像走出屏幕
- c# - 上传文件时cors和jquery出现问题
- django - 在 Django Admin 中包含来自 OneToOneField 的字段
- python - tkinter 上单选按钮中的值不起作用
- azure - 如何将 http 请求 URL 中的路径剥离为 Azure CDN 标准规则的重写或重定向 URL?
- javascript - 如何在 React 中使用变量?
- r - 变异期间的递归滞后()?
- python-3.x - 如果一列中的值在另一列中有多个值,如何在pandas中根据优先级进行过滤