SpringBootでレスポンスヘッダーを設定する方法

Spring Bootでは、@RestControllerアノテーションをクラスに指定して@RequestMappingでのHTTPリクエストパスを指定、@RequestMappingアノテーションをメソッドに指定してHTTPリクエストパスを指定、@GetMappingや@PostMappingアノテーションを指定してHTTPメソッドを指定、メソッドのパラメータでHttpServletResponseオブジェクトを使ってレスポンスヘッダの設定を行います。

こちらは一例です。

import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/hello")
    public String hello(HttpServletResponse response) {
        response.setHeader("Content-Type", "application/json");
        response.setHeader("Custom-Header", "Custom Value");

        return "Hello, World!";
    }
}

メソッドのパスを/helloと指定し、HttpServletResponseオブジェクトをメソッド引数に追加しました。helloメソッドでは、response.setHeaderメソッドを使用して応答ヘッダを設定します。この例では、Content-TypeとCustom-Headerの2つの応答ヘッダを設定しています。

@RestControllerアノテーションは、@Controllerと@ResponseBodyの組み合わせと同じです。@ResponseBodyは、戻り値がビュー名として解決されるのではなく、レスポンスボディーの一部として返されることを意味します。そのため、”Hello, World!”という文字列を直接レスポンスボディーとして返すことができます。

bannerAds