RestController
クラスの異なるメソッドに同じURLをマップすることができるかどうかを知りたいと思っています。例:同じURLを別のメソッドに春にリクエストボディに基づいてマッピングする
@RequestMapping(value="/delete", method=RequestMethod.POST)
public void delete(@RequestBody String id) {
//do something
}
@RequestMapping(value="/delete", method=RequestMethod.POST)
public void delete(@RequestBody Book book) {
//do something
}
リクエストボディは常にJSONペイロードになります。もしそれが{"id":"foo"}
なら私は最初のメソッドを呼びたい。リクエストの本文が次の場合:
{
"title":"Spring Guide",
"author":"John Doe"
}
私は2番目のメソッドを呼び出す必要があります。これは可能ですか?
いいえペイロードに基づいて区別することはできません。 –
あなたのコードスニペットに基づいて、 '/ books/{id}'に 'DELETE'ハンドラを作るほうが適しているようです。 –
これを試すことができます:1つの注釈付きメソッドが両方のJSONペイロードをObject、つまり '@RequestBody Object obj'として渡し、それを' String'または 'Book'に変換してそれを削除するようにします。 –