naoki86star

インターネットの片隅でなにかしら書いてみる

X-HTTP-Method-Override

RestAPIで、POSTメソッドを使ってDELETEメソッドと同じことをするために使えるヘッダ項目、と理解
と。(PUTとかにも使え、要するにPOSTを投げてそれを指定したメソッドの要求としてみなしてくれる項目らしい。当然サーバ側がそのように解釈してくれる必要がある、と思う。)

どんなときに使う羽目になるのか?

  • 使おうとするHTTPクライアントライブラリがDELETEをサポートしていないようなとき
  • DELETEを通してくれないFirewallがあるらしい、そんなとき

自分が当てはまってしまったのは

  • DELETEでpost dataを投げようとするようなとき

rfc2616的にはDELETEではuriで削除しようとするリソースを特定しよう、ということになっているらしいのです。なのでいくらかのHTTPクライアントの実装ではそれに忠実にDELETEメソッド時にはbodyを設定できないようになってます。*1
使おうとしたサービスのAPIが、deleteを使ってね・データはpostしてね(jsonフォーマットでね)となっていた。そのプロジェクトで使っているHTTPクライアント(javaなんですけど)はrfc2616に従っていて、どうしたもんかと思ったのです。そのサービスのFAQ的に表題の拡張ヘッダを使えばなんとかなる、ということになっているようで、それで初めて知りました。

*1:curlコマンドとかでは余裕でDELETEでpost dataを投げてくれる。