JRuby 1.7.4、Sinatra 1.4.4、および Rack 1.5.2 を使用して単純な Web サービスを作成しました。この Web サービスは、GET、POST、PATCH、および DELETE 要求に対して、単純なメッセージ「Hello world using [request-type]」で応答します。
Rack を起動し、すべてのリクエスト タイプをテストしました。4つすべてが機能しました。
Warbler を使用してアプリケーションの war ファイルを作成し、Tomcat 7.0.47 にデプロイしました。Tomcat PATCH でテストしたところ、「HTTP ステータス 501 - Method PATCH は、この URI のこのサーブレットによって実装されていません」で失敗しました。(はい、「そうではありません」が繰り返されます。しかし、これは私が Tomcat から得た応答です。) GET、POST、および DELETE は正常に機能しました。
次に、Jetty 9.1.0 を使用してみました。同じ結果です。GET、POST、および DELETE は機能しますが、PATCH は失敗します。
PATCH リクエストが失敗するのはなぜですか? また、この設定でそれらを機能させるにはどうすればよいですか?