07 API

이연희·2022년 1월 15일
0

Spring

목록 보기
7/105

API

스트링 자체를 전달

 @GetMapping("hello-string")
    @ResponseBody//http에서 header,body에서 body부에 "hello "+name을 직접 넣어주겠다
    public String helloString(@RequestParam("name") String name){
        return "hello "+name;//"hello spring", 요청한 클라이언트에 그대로 전달
    }

  • 런타임까지 가서 오류를 걸러내기 때문에 시간이 오래 걸린다.

객체를 전달

@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;
        }
    }

  • 런타임까지 가지 않고 컴파일 시 오류를 찾아낼 수 있기 때문에 시간이 덜 걸린다.

@ResponseBody 사용 원리

  • HTTP의 BODY에 문자 내용을 직접 반환
  • 'viewResolver' 대신에 'HttpMessageConverter'가 동작
  • 기본 문자 처리: 'StringHttpMessageConverter'
  • 기본 객체 처리: 'MappingJackson2HttpMessageConverter'
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

Tip: 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 'HttpMessageConverter'가 선택된다. (자세한 내용은 MVC 강의에서)


스프링입문07(김영한)

profile
공부기록

0개의 댓글