Spring Web開発基盤(3):API

1920 ワード

@ResponseBody文字を返します

@Controller
  public class HelloController {
      @GetMapping("hello-string")
      @ResponseBody
      public String helloString(@RequestParam("name") String name) {
          return "hello " + name;
      }
}
  • @ResponseBody無効化ViewResolver
    HTTPのBODY(HTML BODY TAGではなく)を直接返す
  • ではありません

    実行


    http://localhost:8080/hello-string?name=spring

    @ResponseBodyオブジェクトを返します

    @Controller
      public class HelloController {
          @GetMapping("hello-api")
          @ResponseBody
          public Hello helloApi(@RequestParam("name") String name) {
              Hello hello = new Hello();
              hello.setName(name);
              return hello;
          }
          static class Hello {
              private String name;
              public String getName() {
                  return name;
    }
              public void setName(String name) {
                  this.name = name;
    } }
    }
    Jsonで画面に表示されます.

    @ResponseBodyの原理を使う



    説明すると、
    @ResponseBodyはhelloオブジェクトを返します.その後@ResponseBodyの場合、HttpMessageConverterが動作します.HttpMessageConverterが返したのは
    Stringの場合StringConverterが対象の場合JsonConverterが基本動作ですJsonConverterは、オブジェクトをJsonタイプに変換し、要求されたWebブラウザに返します.
    以下に整理する.
    ResponseBodyの使用(
  • @ResponseBody)
    -HTTPのBODY文字の内容を直接返す
    HttpMessageConverter代替
  • ViewResolver
  • デフォルト文字処理:StringHttpMessageConverter
  • デフォルトオブジェクト処理:MappingJackson 2 HttpMessageConverter
    (これはオブジェクトをJsonに変換する代表的なライブラリの1つで、スプリングは基本的に読み込まれています.)
  • バイト処理など、他の複数のHttpMessageConverter
  • がデフォルトで登録されている
    注意:クライアントHTTPコレクタとサーバ上のコントローラ返却タイプ情報を組み合わせてHttpMessageConverterを選択します.