Spring アノテーションの秘密: URI からリクエストボディまで、すべてが可能

Spring アノテーションの秘密: URI からリクエストボディまで、すべてが可能

序文

あなたが経験豊富なソフトウェア開発者で、HTTP リクエストのさまざまな側面をより適切に処理するために Spring フレームワークのさまざまなアノテーションを検討する準備ができているとします。URI から変数値を抽出する場合でも、リクエスト ヘッダーを取得する場合でも、ファイルのアップロードを処理する場合でも、このブログでは包括的なガイドを提供します。@PathVariable、@RequestBody、@RequestParam などの一般的なアノテーションと、@RequestHeader、@CookieValue、@ModelAttribute、@RequestPart などの他の同様のアノテーションについて詳しく説明します。

初心者でも経験豊富な開発者でも、この記事では、各アノテーションの役割をシンプルかつわかりやすい方法で説明し、明確なコード例を提供し、これらの強力なツールをよりよく理解して適用できるように、実用的なアプリケーション シナリオを共有します。 。複雑なドキュメントを読む必要はなく、この記事に従うだけで、Spring フレームワークのリクエストパラメーターとリクエストボディに関するアノテーションを簡単にマスターできます。

準備はできたか?楽しさと発見に満ちた春のアノテーションの旅を始めましょう!

関連メモ

1. @PathVariable:

  • 目的: URI から変数値を抽出するために使用されます。
  • 適用可能なシナリオ: 通常、URI の一部に変数値が含まれる RESTful スタイルの URL に使用されます。
  • サンプルコード:
    @GetMapping("/user/{userId}")
    public ResponseEntity<User> getUserById(@PathVariable Long userId) {
          
          
        // 根据userId获取用户信息
        User user = userService.getUserById(userId);
        return ResponseEntity.ok(user);
    }
    

2. @RequestBody:

  • 目的: リクエスト本文からオブジェクト データを取得するために使用されます。
  • 適用可能なシナリオ: POST および PUT リクエストで一般的に使用され、クライアントは JSON または XML などのデータをリクエスト本文として送信します。
  • サンプルコード:
    @PostMapping("/user")
    public ResponseEntity<Void> createUser(@RequestBody User newUser) {
          
          
        // 创建新用户
        userService.createUser(newUser);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }
    

3. @RequestParam:

  • 目的: リクエストパラメータから値を取得するために使用されます。
  • 適用可能なシナリオ: 通常、クエリ パラメーターの処理に使用され、通常は GET リクエストで使用されます。
  • サンプルコード:
    @GetMapping("/users")
    public ResponseEntity<List<User>> getUsersByRole(@RequestParam("role") String role) {
          
          
        // 根据角色查询用户列表
        List<User> users = userService.getUsersByRole(role);
        return ResponseEntity.ok(users);
    }
    

@PathVariable、@RequestBody、@RequestParam に加えて、Spring フレームワークはリクエスト パラメーターとリクエスト本文を処理するための他の関連アノテーションも提供しており、特定のニーズに応じてこれらのアノテーションを選択して使用できます。

4. @リクエストヘッダー:

  • 目的: HTTP リクエストヘッダー情報の値を取得するために使用されます。
  • サンプルコード:
    @GetMapping("/user")
    public ResponseEntity<String> getUserAgent(@RequestHeader("User-Agent") String userAgent) {
          
          
        // 获取User-Agent请求头信息
        return ResponseEntity.ok("User-Agent: " + userAgent);
    }
    

5. @CookieValue:

  • 目的: HTTP リクエストの Cookie 値を取得するために使用されます。
  • サンプルコード:
    @GetMapping("/user")
    public ResponseEntity<String> getCookieValue(@CookieValue("sessionId") String sessionId) {
          
          
        // 获取名为sessionId的Cookie值
        return ResponseEntity.ok("Session ID: " + sessionId);
    }
    

6. @ModelAttribute:

  • 目的: リクエスト パラメーターをモデル オブジェクトにバインドするために使用され、通常はフォームを送信するときに使用されます。
  • サンプルコード:
    @PostMapping("/user")
    public ResponseEntity<Void> createUser(@ModelAttribute User newUser) {
          
          
        // 创建新用户
        userService.createUser(newUser);
        return ResponseEntity.status(HttpStatus.CREATED).build();
    }
    

7. @RequestPart:

  • 目的: リクエスト内のファイルのアップロードを処理するために使用されます。
  • サンプルコード:
    @PostMapping("/upload")
    public ResponseEntity<String> uploadFile(@RequestPart("file") MultipartFile file) {
          
          
        // 处理上传的文件
        // ...
        return ResponseEntity.ok("File uploaded successfully");
    }
    

これらのアノテーションは、リクエスト データを処理するためのより多くのオプションを提供し、さまざまなシナリオに従ってリクエスト パラメータとリクエスト本文を処理するために適切なアノテーションを選択できます。ニーズに応じて、これらの注釈を組み合わせてアプリケーションのニーズを満たすことができます。同様に、コードの読みやすさと保守性を向上させるために、コードに適切なコメントを追加することをお勧めします。

おすすめ

転載: blog.csdn.net/Mrxiao_bo/article/details/133488135