1. api 란?
한 소프트웨어에서 다른 소프트웨어로 요청을 보내거나 받을 수 있는 수단.
2. 코드분석
(1) @ResponseBody에 대한 설명
@GetMapping("hello-string")
@ResponseBody //컨트롤러가 반환 값을 http body부에 직접 넣어주겠다.
public String helloString(@RequestParam("name") String name)
{
return "hello " + name;
/* para에 spring을 넣으면 hello spring이 될 것임.
여기선 view이런 걸로 그에 맞는 template 찾아 값 넣는 과정 없이
데이터가 그대로 웹 브라우저에 들어감.
데이터 원본 보기를 해도 코드가 안 뜨고 우리가 넣은 스트링이 그대로 뜸.
*/
}
***Http의 구조***
http는 header와 body로 이루어져있다.
header -> 요청과 응답에 대한 메타 정보,
body -> 요청할 때 함께 보낼 데이터가 들어 있는 부분
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name)
//여기서 Hello는 객체 선언으로 인해 생긴 새로운 데이터 타입
{
Hello hello = new Hello();
hello.setName(name);
return hello;
// 객체 생성 - 객체의 setname 함수 이용(para로 받은 인수를 name의 value로 넣어주는 것.)
// 만든 객체를 반환
}
static class Hello
{
private String name;
public String getName() // name 조회 하는 함수
{
return name;
}
public void setName(String name) //name에 값을 넣는 함수
{
this.name = name;
}
3. 작동 원리
1) 웹 브라우저에서 localhost:8080/hello-api를 GET 요청함.
2) 내장 웹 서버 tomcat이 이를 받아들여서 springboot로 다시 보내줌.
3) 스프링부트는 해당 내용을 처리할 수 있는 컨트롤러가 있는 지 확인. ->helloController가 처리 가능함을 확인
4) ResponseBody 어노테이션이 있음을 발견
(if ResponseBody가 없었다면? 컨트롤러는 반환 값을 viewResolver에게 넘기고,
반환 값을 담을 수 있는 적절한 템플릿을 찾아 돌려달라고 요청)
(ResponseBody가 있다면? 컨트롤러는 반환 값을 직접 http-body부분에 다시 보내버림.)
5) 반환 값이 문자였다면 그대로 http로 보내면 되는데, 반환 값이 객체임
반환 값이 객체일 때 default는 이 객체의 key 값과 value값을 JSON 형식으로 정제해서 http에 보내는 게 원칙
여기에 대응 되는 그림이 JSONConverter(반환 값이 객체이면 JSON으로 바꾸어 보내주는 녀석)와
StringConverter(반환 값이 문자면 그대로 내보내는 녀석).
6) JSON으로 바꾼 내용을 웹 브라우저에 응답으로 보내준다.
4. 외운 거 확인
(1) @ResponseBody의 뜻?
(2) 작동 원리 객체를 반환할 때와 문자를 반환할 때 나눠서 설명
'백엔드 개발 > SpringMVC' 카테고리의 다른 글
회원 도메인과 레포지토리 만들기 (0) | 2022.11.29 |
---|---|
Web 애플리케이션 계층 구조 (0) | 2022.11.29 |
Spring Web 개발 기초 - MVC 작동원리 (0) | 2022.11.29 |
Spring Web 개발 기초 - 정적 컨텐츠 작동원리 (0) | 2022.11.29 |
윈도우 명령 프롬프트에서 jar 파일 Build 하는 법 (0) | 2022.11.29 |