【发布时间】:2015-05-26 00:59:48
【问题描述】:
我经常发现在不发送 JSON 正文的情况下很难管理复杂的 GET 请求。 URL参数只是不会削减它。如果我设法找到解决 URL 参数的方法,那么通常会增加更多的复杂性和混乱。
我不是网络开发人员,我没有做过任何大型应用程序,但即使是小型应用程序,我也有这样的要求:
{ page: { batch: 10, current: 1 }
, sort: { _id: -1 }
, project: {history: 0, attach: 0}
, filter: { status: "new"}
}
这是一个没有数组的简单请求。数组只会让这更成问题。
那么,我的问题是如何在没有 JSON 正文的情况下管理复杂的 GET 请求?我在做什么/想错了什么?为什么我们不能使用 GET 获取 body?
是的,我可能可以使用 URL 参数发送这个请求,但它让生活变得更加困难,尤其是当您需要发送过滤器、分页等等时......
我厌倦了所有的困难,并将此类 GET 请求更改为 POST。 我知道这是错误的(因此是问题),但感觉就像我肩上的巨大负担。
【问题讨论】:
-
POST 请求有什么问题?
-
@Veselin Vasilev POST 没有问题。这就是我使用的。但是用 POST 请求对象列表感觉不对。因此,我的大多数 API 最终都变成了“无 GET”。拍摄结构化的 JSON 然后摆弄笨拙的 URL 参数要容易得多。
-
使用
POST请求获取资源是违反REST原则的。使用POST进行分页/过滤请求是 RPC over HTTP。 -
@LutzHorn 错了。根据这个推理,任何 POST 的使用都是 RPC。在下面检查我的答案。
-
@PedroWerneck 不,那不是我写的。
POST有一些有效的用法,比如创建一个集合资源的新子项(服务器为其分配完整的 URL)。
标签: rest http asp.net-web-api