web-dev-qa-db-ja.com

スプリングブートリクエストマッピングのパスと値の違い

2つ以下と、いつ使用するの違いは何ですか?

    @GetMapping(path = "/usr/{userId}")
       public  String findDBUserGetMapping(@PathVariable("userId") String userId) {

    return "Test User";
}

   @RequestMapping(value = "/usr/{userId}", method = RequestMethod.GET)
    public String findDBUserReqMapping(@PathVariable("userId") String userId) {

    return "Test User";
}
16
Raj

コメント(および ドキュメント )で述べたように、valuepathのエイリアスです。 Springでは、よく使用される要素のエイリアスとしてvalue要素を宣言することがよくあります。 _@RequestMapping_(および_@GetMapping_、...)の場合、これはpathプロパティです。

これは path() のエイリアスです。たとえば、@RequestMapping("/foo")@RequestMapping(path="/foo")と同等です。

この背後にある理由は、注釈に関してはvalue要素がデフォルトであるため、より簡潔な方法でコードを書くことができるからです。

この他の例は次のとおりです。

  • _@RequestParam_(valuename
  • _@PathVariable_(valuename
  • ...

ただし、例で示したように、_@GetMapping_は_@RequestMapping(method = RequestMethod.GET_)のエイリアスであるため、エイリアスは注釈要素のみに限定されません。

コード内でのAliasForの参照 を探すだけで、かなり頻繁にこれを行うことがわかります。

11
g00glen00b

_@GetMapping_は@RequestMapping(method = RequestMethod.GET)の省略形です。

あなたの場合。 @GetMapping(path = "/usr/{userId}")@RequestMapping(value = "/usr/{userId}", method = RequestMethod.GET)の短縮形です。

両方とも同等です。より冗長な選択肢よりも、_@GetMapping_の省略形を使用することをお勧めします。 _@RequestMapping_でできないことの1つは、_@GetMapping_ではできませんが、複数の要求メソッドを提供することです。

_@RequestMapping(value = "/path", method = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT)
public void handleRequet() {

}
_

複数のHttp動詞を提供する必要がある場合は、_@RequestMapping_を使用します。

_@RequestMapping_のもう1つの使用法は、コントローラーのトップレベルパスを提供する必要がある場合です。例えば.

_@RestController
@RequestMapping("/users")
public class UserController {

    @PostMapping
    public void createUser(Request request) {
        // POST /users
        // create a user
    }

    @GetMapping
    public Users getUsers(Request request) {
        // GET /users
        // get users
    }

    @GetMapping("/{id}")
    public Users getUserById(@PathVariable long id) {
        // GET /users/1
        // get user by id
    }
}
_
5
Juzer Ali

@ GetMapping は@RequestMappingのエイリアスです

@GetMappingは、@ RequestMapping(method = RequestMethod.GET)のショートカットとして機能する合成注釈です。

methodは、pathメソッドのエイリアスです。

これはpath()のエイリアスです。たとえば、@ RequestMapping( "/ foo")は@RequestMapping(path = "/ foo")と同等です。

そのため、両方の方法はその意味で似ています。

4
user7294900