2

私はSpring REST / Backboneアプリケーションに取り組んでいます。

GET は問題なく機能しますが、PUT には問題があります (おそらく DELETE でも同じです)。

私のSpringコントローラーには次のメソッドがあります:

@RequestMapping(value="/{id}", method = RequestMethod.PUT)
public void putItem( @PathVariable("id") String id, @RequestBody Item item) {...}

しかし、バックボーン モデルを保存しようとすると、次のエラーが発生します。

405 (HTTP method PUT is not supported by this URL)

GET マッピングは同じコントローラー クラスにあり、同じ URL アノテーション (クラス レベル) を使用します。

私の注釈は正しいですか?サーバーに Jetty を使用していますが、PUT リクエストを許可するように設定する必要がありますか?

編集:

これが Jetty 構成の問題であると仮定して、webdefault.xml に以下を追加しました。

<web-resource-collection>
  <url-pattern>*.do</url-pattern>
  <http-method>GET</http-method>
  <http-method>HEAD</http-method>
  <http-method>PUT</http-method>
  <http-method>POST</http-method>
</web-resource-collection>

<security-constraint>定義内。これには、GET メソッドが 403 (禁止) を返すという効果があります。したがって、この定義は実際にはセキュリティを制限するだけであり、より自由にする手段ではないようです。GET 行と PUT 行も削除しようとしましたが、元の 405 エラーには影響しませんでした (もちろん、GET が再び機能するようになりました)。

4

2 に答える 2

1

サーバーで GET POST PUT 動詞と DELETE 動詞が有効になっていることを確認する必要があります。問題はクライアント側ではないため、サーバー設定にアクセスできる場合は、上記の動詞が有効になっていることを確認してください。私は突堤に精通していませんが、そのままではサポートされておらず、独自のハンドラーが必要になるようです。クイック検索を行った後に見つけたリソースは次のとおりです-> JETTY - PUT DELETE

于 2012-06-20T12:37:12.427 に答える
0

私はついに問題が*.doパターンであることに気づきました。

バックボーンはパス変数の前に.doを追加していたため、機能しませんでした。私は接尾辞を完全に取り除きました、そして今それは働きます!

于 2012-06-20T18:51:05.260 に答える