Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用GET还是POST REST API方法?_Rest - Fatal编程技术网

我应该使用GET还是POST REST API方法?

我应该使用GET还是POST REST API方法?,rest,Rest,我想检索关于一堆资源的数据。假设是一个book id数组,响应是book对象的JSON数组。我想将请求负载作为JSON发送到服务器 我应该使用GET和POST方法吗 注: 我不想对每个图书ID发出多个GET请求 POST似乎令人困惑,因为它应该仅在请求创建资源或修改服务器状态时使用。如果我理解正确,您希望在一次拉取中获得列表中所有项目的列表。这可以使用GET实现,因为REST返回JSON,默认情况下最多可以有100个条目,如果需要,可以通过指定$top来获取更多条目 至于写回或服务器,帖子将是你

我想检索关于一堆资源的数据。假设是一个book id数组,响应是book对象的JSON数组。我想将请求负载作为JSON发送到服务器

我应该使用
GET
POST
方法吗

注: 我不想对每个图书ID发出多个
GET
请求


POST似乎令人困惑,因为它应该仅在请求创建资源或修改服务器状态时使用。

如果我理解正确,您希望在一次拉取中获得列表中所有项目的列表。这可以使用GET实现,因为REST返回JSON,默认情况下最多可以有100个条目,如果需要,可以通过指定$top来获取更多条目


至于写回或服务器,帖子将是你所寻找的,据我所知,这将需要一对一

您将使用GET请求,并将请求数据(图书id数组)放入ajax(或任何您将要使用的)请求的数据部分。看

我想检索关于一堆资源的数据。假设是一个book id数组,响应是book对象的JSON数组

如果您正在考虑将book id数组作为HTTP请求的消息体传递,那么
GET
是一个简单的方法

GET请求消息中的有效负载没有定义的语义;在GET请求上发送有效负载正文可能会导致某些现有实现拒绝该请求

你应该改用POST

POST似乎令人困惑,因为它应该仅在请求创建资源或修改服务器状态时使用

那不太对。可用于任何用途--请参阅或。但是,通过使用POST,您放弃的是中间组件参与对话的能力

例如,对于有效只读的情况,您希望使用一种方法,因为它允许预缓存优化,并在不可靠的网络上自动重试丢失的响应。POST没有额外的语义约束,所以您会失败

HTTP真正想要的是使用URI
GET
;这可以通过两种相对简单的方法之一实现:

1) 将ID发布到服务器,以创建新资源(意味着服务器为自己保留ID列表的副本),并在exchange中接收新的资源标识符。然后,在您想知道结果的当前表示形式的任何时候,都可以使用这个新标识符

2) 将您需要的信息编码到URI本身中。最常见的是,这是使用URI的查询部分完成的,尽管严格来说这不是必需的。这里的缺点是,如果ID数组的URI编码表示非常长,那么您可能会遇到一些强制执行任意URI限制的实现的问题

并非总是有很好的答案:

REST接口的设计目的是高效地进行大粒度超媒体数据传输,针对Web的常见情况进行优化,但导致的接口对于其他形式的体系结构交互不是最佳的


严格来说,您应该使用GET并传入要检索的图书id集合。但是,如果该图书列表可能超出URL查询字符串中所能容纳的范围,那么您可能不得不使用POST。我想知道最好用什么<根据REST API定义,代码>获取或
发布
。@Siva最后使用的方法是什么?我的情况和你问这个问题时的情况相似。