rest - 检查输入数据是否匹配数据库记录的正确 RESTful 方法
问题描述
我有一个应用程序,它接受用户输入的个人详细信息(姓名、dob 等)并在数据库中查找匹配项。我不是在创建记录,也不是在编辑记录。
现在通常我会使用 GET,但 GET 不允许我使用正文,并且所有需要检查的数据都必须发送。我针对所有用户的输入运行数据库查询以找到匹配项。如果数据库返回匹配项,则找到匹配项,否则返回空数组且未找到匹配项。
那么你能推荐我可能使用的正确的 RESTful 方法(HTTP)吗?
谢谢
解决方案
由于POST
操作负载的语义是由服务本身定义的,因此在其他操作不适合的任何情况下都应该使用它。POST
因此,它不仅用于创建新资源,还用于触发某些计算和类似的东西。
然而,普遍的问题是,为什么需要这种方法?如果您担心在获取资源状态和请求更新之间覆盖其他客户端对资源所做的任何更改,即,您应该考虑使用RFC 7232中定义的条件请求,其中ETag
为当前状态计算哈希或者Last-Modified
取值并添加到响应头中。然后,客户端可以发送包含有效负载的请求以首先检查是否包含请求服务器仅在前提条件成立时应用更新的If-Match
或标头。If-Unmodified-Since
如果它失败了,服务器会告诉你一个412 Precondition Failed
错误响应。
推荐阅读
- javascript - 如何在 Worker 中使用 Firebase 电话身份验证
- android - 如何在 Android Studio 中使用 JAVA 在文本到语音中实现暂停然后恢复?
- chart.js - 如何创建多尺度图表?
- odoo - 根据选择字段更改 Many2one 域
- python - 如何解决依赖于顺序的并行机调度问题,其中提供计划作为解决方案?
- python - 由 pandas dropna() 引起的“发现样本数量不一致的输入变量”错误
- microsoft-graph-api - 重试分页 Microsoft Graph 数据
- python - 在 python 中运行 session.execute 后获取插入行的主键
- python - Google Drive API 搜索是否不仅响应文件/文件夹元数据,还响应搜索响应中匹配的内容 wrt 查询?
- python - 根据某些列中的相似值合并行