多条件查询遵循 Restful API 规范的改如何设计?

发布于 2022-09-11 15:56:42 字数 476 浏览 22 评论 0

问题描述

  1. 由于遵循 Restful API 规范,Get 请求的方式针对于多条件查询来说,不好设计接口

问题出现的环境背景及自己尝试过哪些方法

有人提供过两种方式

  1. http://localhost:8080/app/names?queryDtoStr={"query1":12,"query2":2,"query3":2}
  2. 或者直接使用 POST 请求

相关代码

你期待的结果是什么?实际看到的错误信息又是什么?

有没有其他设计方式,尽量遵循 Restful API 规范

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

看轻我的陪伴 2022-09-18 15:56:42

Restful查询就用Get请求,参数传递就用query string了,当然要考虑你的参数的大小,毕竟Get传参,参数内容有限。

回心转意 2022-09-18 15:56:42

引用于:RESTful API 设计最佳实践
原文:Best Practices for Designing a Pragmatic RESTful API

如果Action不符合CRUD操作那该怎么办?

  1. 重新构造这个Action,使得它像一个资源的field(我理解为部分域或者部分字段)。这种方法在Action不包含参数的情况下可以奏效。例如一个有效的action可以映射成布尔类型field,并且可以通过PATCH更新资源。
  2. 利用RESTful原则像处理子资源一样处理它。例如,Github的API让你通过PUT /gists/:id/star 来 star a gist ,而通过DELETE /gists/:id/star来进行 unstar 。
  3. 有时候你实在是没有办法将Action映射到任何有意义的RESTful结构。例如,多资源搜索没办法真正地映射到任何一个资源接入点。这种情况,/search 将非常有意义,虽然它不是一个名词。这样做没有问题 - 你只需要从API消费者的角度做正确的事,并确保所做的一切都用文档清晰记录下来了以避免(API消费者的)困惑。

所以题主完全可以提供 /app/names/search 服务专门用于搜索功能,查询参数一般是通过 query parameters 的方式传递。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文