我是Elasticsearch的新手,尝试在弹性索引中添加文档。我在PUT和POST之间感到困惑,因为两者在下面的场景中产生相同的结果:
curl -H "Content-Type: application/json" -XPUT "localhost:9200/products/mobiles/1?pretty" -d"
{
"name": "iPhone 7",
"camera": "12MP",
"storage": "256GB",
"display": "4.7inch",
"battery": "1,960mAh",
"reviews": ["Incredibly happy after having used it for one week", "Best iPhone so far", "Very expensive, stick to Android"]
}
"
对比
curl -H "Content-Type: application/json" -XPOST "localhost:9200/products/mobiles/1?pretty" -d"
{
"name": "iPhone 7",
"camera": "12MP",
"storage": "256GB",
"display": "4.7inch",
"battery": "1,960mAh",
"reviews": ["Incredibly happy after having used it for one week", "Best iPhone so far", "Very expensive, stick to Android"]
}
"
3条答案
按热度按时间czq61nw11#
请参阅this
jk9hmnmh2#
它们都属于HTTP的安全方法。
通常我们使用POST来创建一个资源,而使用PUT来修改它。此外,如果您可以自由地设置服务器端,您可以同时使用它们,因为它们都具有类似的属性,如:它们都有正文,它们是安全,数据不显示在URL中,而且....尽管最好考虑标准规则,我以前说过其中一条:通常我们用POST来创建一个资源,用PUT来修改它。2这样你的代码就更易读,更易修改...
为了更深入地了解,您可以根据put-versus-post考虑以下提示:
在POST和PUT之间做出选择很容易:当且仅当端点将遵循以下两条规则时,才使用PUT:
1.端点必须是幂等的:一遍又一遍地重复请求是安全的;
当我们使用PUT时,我们是说,我们希望在请求中发送的资源存储在给定的URI中,我们实际上是在这个地址“放置”资源。
7eumitmz3#
POST和PUT之间的唯一区别是不能使用PUT创建具有自动ID生成功能的文档。
以下查询将创建一个文档并自动生成一个ID:
尝试同样的PUT结果为“HTTP方法不正确”。
除非我不够努力,否则这是POST和PUT在创建文档时的唯一区别。除此之外,POST和PUT将让您实现相同的功能。