JavaScript - node.jsのDELETEメソッドのリクエストを送る処理の、リクエストボディの扱いについて質問(68972)|teratail
DELETE に body を付ける事はGET同様、仕様上禁止されていないのですが、 POST, PUTは content-length を付けることが必須なのに対して、 GET, DELETE は任意となっております。
この仕様上、 content-length がリクエストパラメータに付与されていないことになると、多くのサーバでは GET/DELETE の際にどこまでbodyとして読んだら良いのかわからないことがあります。
このため、多くのweb サーバでは GET/DELETE でbodyを付けることに対応していないことが多いです。 そして node.js の場合は、 http-parser で DELETE に body があろうがなかろうが、Content-Lengthがない場合は無視します。
Conclusion
- DELETE の場合は、パラメータをクエリ文字列で渡すこともbodyにつけて渡すことも仕様上はどちらでも可
- bodyにつけた場合は、
content-length
を正しくセットする必要がある - 基本、クエリ文字列でいいのではというのが結論