问题描述
我遇到的情况是服务器有一些项目由两个键标识:类型和大小。客户不知道商品 ID。
客户应该能够执行请求以获取他们想要的项目列表。例如:
“给我圆 40、圆 30 和正方形 40”。
使用 json 主体很容易,但我们必须使用 GET 请求。鉴于这个问题,这根本没有用:/ids=1,2,3
.
我们应该做一个:
- 客户端应该发送
type_size
的奇怪约定? - 客户端应该发送
type=size1,size2
的奇怪约定 - 针对每种类型的 GET 请求?
- 作为 GET 的 POST 请求?
- POST 请求生成一个 ID 以执行后续的 GET 请求?
解决方法
您将如何使用 HTML 网页执行此操作?
您可能有一个带有表单的网页,该表单将具有输入控件,以便客户可以列出他们想要的项目。填写完表格后,提交。
此时,浏览器使用输入控件收集的数据创建一个 application/x-www-form-urlencoded 文档,并且(因为表单上的方法是 GET),将该文档用作查询部分请求 uri。
GET /items?circle=30&circle=40&square=40
更一般地说,我们可以向客户端提供一个 URI template,用于描述应如何将信息编码到 URI 中。
但就 HTTP 而言:只要 URI 符合 RFC 3986 描述的生产规则,它可以是您想要的任何内容。只要客户端知道如何对信息进行编码,服务器也知道如何以同样的方式解码信息,你就可以为所欲为。