[Spring]API

DEV.Kang·2022년 5월 12일
1

spring

목록 보기
6/6
post-custom-banner

@ResponseBody 문자반환

@GetMapping("hello-string") //메서드에 따라 어떤 page를 보여줄지 결정한다.
    @ResponseBody //ResponseBody 문자 반환
    public String helloString(@RequestParam("name") String name){ //name이라는 데이터를 가져와서 name이라는 변수에 저장한다.
        return "hello"+name; //hello+name의 값을 반환한다.
    }

비동기처리 방식에는 repsonsebody, requestbody가 존재합니다.
@ResponseBody는 http 요청 body를 자바 객체로 전달할 수 있씁니다.
@ResponseBody를 사용하면 viewResolver를 사용하지 않습니다.
대신에 HTTP의 BODY에 문자 내용을 직접 반환합니다.

@ResponseBody 객체반환

@GetMapping("hello-api") //메서드에 따라 어떤 page를 보여줄지 결정합니다.
    @ResponseBody //ResponseBody 객체 반환
    public Hello helloApi(@RequestParam("name") String name){ //name이라는 데이터를 가져와서 name이라는 변수에 저장한다.
        Hello hello = new Hello(); //hello라는 새로운 변수를 생성합니다.
        hello.setName(name); //hello라는 변수에 setName(name) 값을 저장합니다.
        return hello; //hello를 반환합니다.
    }

    static class Hello{ //중첩 클래스 Hello를 생성한다,
        private String name; //name이라는 문자열 변수를 생성한다.

        public String getName() { //return값이 string이기 때문에 string get을 사용한다.
            return name; //name이라는 변수를 반환한다.
        }

        public void setName(String name){ //return하는 값이 없기에 void를 사용하여 set을 사용한다.
            this.name = name; //this.멤버변수를 이용하여 name에 name 변수 값을 할당한다.
        }
    }

중첩클래스: 다른 클래스 안에 정의된 클래스
private: 외부에서 접근하지 못하며, 같은 클래스 내에서만 접근이 가능하다.
GET: 변수값을 반환하는 목적이기 때문에 return이 필요하다.
SET: 변수값을 할당하는 목적의 함수이다.
this.멤버변수: 매개변수와 객체자신이 가지고 있는 변수의 이름이 같은 경우 이를 구분하기 위해 this를 붙인다.
@ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환된다.

동작 방식

  1. 웹 브라우저에서 localhost:8080/hello-api를 요청하게 됩니다.
  2. 스프링 부트 내부에 있는 내부 톰켓 서버가 이것을 받아 스프링 컨테이너에 넘기게 됩니다.
  3. 스프링 컨터이너 내부에 있는 helloController에서 @ResponseBody를 사용하여 hello(name:spring)을 HttpMessageConverter에 넘겨주게 됩니다.
  4. HtppMessageConverter에서 웹 브라우저에 {name:spring}을 보내주게 됩니다.

@ResponseBody를 사용

  • HTTP의 BODY에 문자 내용을 직접 반환합니다.
  • viewResolver 대신에 HttpMessageConverter가 동작합니다.
  • 기본 문자 처리: StringHttpMessageConverter
  • 기본 객체 처리: MappingJackson2HttpMessageConverter
  • byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있습니다.
profile
back-end에 대해 집중적으로 공부 내용을 업로드 예정입니다.
post-custom-banner

0개의 댓글