1

私はJavaRESTエンドポイントを作成し、Rubyを使用してそれを消費しています。

Ruby / Railsの世界では、アクティブリソースを使用して、URLは次のいずれかになります。

/users.json

また

/users.xml

現在、私のコントローラーメソッドは次のようになっています。

@ResponseBody
@RequestMapping(value = "/users.json", method = RequestMethod.GET)
public String list(HttpServletRequest request, HttpServletResponse response) {

}

拡張子が.xmlのURLにマッピングするために、このメソッドを複製する必要はありません。

どういうわけか両方のURLを実行できますか?

また、コンテンツタイプをjsonまたはxmlのいずれかに設定する必要があります。

もう1つの方法は、Springがリクエストヘッダーを確認してからjsonまたはxmlのいずれかを返すことですが、railsがどのように機能するかを模倣しているようです。users.jsonまたはusers.xmlが必要です(URL構造に基づいてリクエストヘッダーに反対します)。

4

2 に答える 2

1

はい、これは Spring で可能ContentNegotiatingViewResolverです。このハウツー ブログ投稿を参照してください: http://www.mkyong.com/spring-mvc/spring-3-mvc-contentnegotiatingviewresolver-example/

于 2012-12-30T06:08:21.260 に答える
1

@ResponseBody を使用する場合、ContentNegotiatingViewResolver をバイパスします。

URL を /users.json または /users.xml の代わりに /users に設定し、requestheaders の Accept ヘッダーを目的のメディアタイプに設定すると、フレームワークが適切なメッセージ コンバーターを選択し、代わりにジョブを実行します。注: messageconverter がクラスパスに存在する必要があります。

お役に立てれば。

于 2013-02-14T06:41:18.583 に答える