# Curl の PUT と POST に関する初歩的な質問

**URL:** <https://discuss.elastic.co/t/curl-put-post/50073>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [May 15, 2016, 11:23am UTC](https://discuss.elastic.co/t/curl-put-post/50073 "2016-05-15T11:23:19Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![arum](https://avatars.discourse-cdn.com/v4/letter/a/b77776/32.png) [@arum](https://discuss.elastic.co/u/arum)\
**Post date:** [May 15, 2016, 11:23am UTC](https://discuss.elastic.co/t/curl-put-post/50073/1 "2016-05-15T11:23:19Z")

</div>

問1)  
POSTとPUTの違いについて  
(a)更新の場合はPOST、新規作成の場合はPUT  
(b)新規作成の場合はPOST、更新の場合はPUT  
の2つの説明を見かけたのですが  
どちらが正しいのでしょうか。

問2)  
IDを指定せずにElasticSearchにIDを決定させる時は  
PUTではなくPOSTを使用しますが、  
IDを新規に作成するわけだから新規作成になると  
思いますが、そうするとPOSTは新規作成となるので  
問1) は(b) が正しいのでしょうか。

問3)  
ElasticSearchに決めさせずにユーザーがすべて指定する場合は、  
新規作成も更新もどちらも、PUTでもPOSTでも可能のように  
思えるのですが、これは正しいでしょうか。

問4)  
問3)が正しいとするとPUTとPOSTの差異は  
問2)のようなべき等でない場合のみであり、  
そうすると  
PUTでできることはすべてPOSTでもできるように  
思えるのですが、これは正しいでしょうか。

よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![johtani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/johtani/32/44956_2.png) [@johtani](https://discuss.elastic.co/u/johtani)\
**Post date:** [May 16, 2016, 2:48am UTC](https://discuss.elastic.co/t/curl-put-post/50073/2 "2016-05-16T02:48:06Z")

</div>

ちなみに、どちらにその記述がありましたでしょうか？  
公式ドキュメントの自動ID作成の記述に関してはこちらになります。

[https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index\_.html#\_automatic\_id\_generation](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#_automatic_id_generation)  
IDなしの場合はPOSTを使用する必要があります。

Update APIに関してはPOSTのみの受付となります。  
[https://www.elastic.co/guide/en/elasticsearch/reference/2.3/docs-update.html#\_updates\_with\_a\_partial\_document](https://www.elastic.co/guide/en/elasticsearch/reference/2.3/docs-update.html#_updates_with_a_partial_document)

---

<div class="post-metadata">

**Author:** ![arum](https://avatars.discourse-cdn.com/v4/letter/a/b77776/32.png) [@arum](https://discuss.elastic.co/u/arum)\
**Post date:** [May 16, 2016, 1:00pm UTC](https://discuss.elastic.co/t/curl-put-post/50073/3 "2016-05-16T13:00:13Z")

</div>

> ちなみに、どちらにその記述がありましたでしょうか？

例えば、  
(例1) [yohei-y:weblog: REST 入門(その5) 四つの動詞 -- GET, POST, PUT, DELETE](http://yohei-y.blogspot.jp/2005/04/rest-5-get-post-put-delete.html)  
・PUT はリソースを更新するメソッド  
・POST はリソースを新規作成するメソッド

(例2) 書籍「高速スケーラブル検索エンジン Elasticsearch Server」 (アスキー・メディアワークス) 初版 33ページ  
・POSTはオブジェクトの状態を変更する  
・PUTはオブジェクトを生成する  
などです。

> IDなしの場合はPOSTを使用する必要があります。  
> Update APIに関してはPOSTのみの受付となります。

問5) これらはPUTでは駄目でPOSTを使用しなければならないケースですが、  
逆に、POSTでは駄目でPUTを使用しなければならないケースはあるのでしょうか?

問6) 問5)のようにPUTかPOSTのどちらかが駄目ではないが、  
つまり、PUTもPOSTもどちらも正常に実行しているが、  
PUTとPOSTで実行結果が異なるようなケースはありますか?

なお、問1)～問6)は、  
ElasticSearchにRESTAPIのコマンドを送って  
作成・更新・取得・削除・検索・設定などの処理を  
行わせる場合に限定してもらってもいいです。

よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:48pm UTC](https://discuss.elastic.co/t/curl-put-post/50073/4 "2017-07-06T13:48:21Z")

</div>


