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!”という文字列を直接レスポンスボディーとして返すことができます。