일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- php 프로그래밍 입문 3판
- SWEA
- php 프로그래밍 입문 연습문제
- php 프로그래밍 입문 문제풀이
- Java
- 페이코 추천인
- 한정 분기
- php 프로그래밍 입문 예제
- C언어
- php 프로그래밍 입문
- 플러터 개발환경 설정
- JAVA SPRING
- 페이코 초대코드
- 플러터
- php
- 파이썬
- php 프로그래밍
- php 프로그래밍 입문 솔루션
- 최단 경로
- 백준
- Flutter
- 페이코 친구코드
- 자바
- 페이코 추천인코드
- 배열
- 자바 스프링
- C
- programmers
- 스프링
- spring
- Today
- Total
ImJay
[Java Spring] 1-7. API 본문
[Java Spring] 1-7. API
1. API : json 등의 데이터 구조 포맷으로 데이터를 전달 ( view, react, 서버끼리 통신할 때 )
정적 컨텐츠를 제외하면 MVC 를 통해 HTML 로 내리는가, 혹은 API 를 통해 데이터로 바로 내리는가 두가지만 기억하면 된다.
2. 기존 HelloController.java 에 다음과 같은 코드를 추가한다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
여기서 중요한 것은 @ResponseBody 이다.
@ResponseBody 가 의미하는 것은, HTTP 프로토콜의 바디부분 (HTML 아님) 에 이 데이터를 내가 직접 넣어주겠다는 의미이다.
템플릿 엔진과의 차이는? View 가 없다. name 값의 문자가 그대로 내려간다.
3. 빌드 ( ALT + SHIFT + F10 ) 후 localhost:8080/hello-string?name=spring!! 입력 및 확인
HTML 태그 하나 없이 문자가 그대로 내려온다.
이전의 템플릿 엔진은 View 안에서 조작하는 방식이었다면, API는 데이터를 그대로 내려온다.
4. 기존 HelloController.java 에 다음과 같은 코드를 추가한다.
@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;
}
}
- Property 방식을 사용
- IntelliJ 의 getter&setter 단축키는 Alt + Insert 이다.
5. 빌드 ( ALT + SHIFT + F10 ) 후 localhost:8080/hello-api?name=spring!! 입력 및 확인
위와 같이 키와 값으로 이루어진 방식을 JSON 방식이라고 한다. 이전에는 XML 방식을 사용했다가, JSON 으로 완전히 통일됨.
6. 작동 원리
6-1. 웹 브라우저에서 톰캣 서버로 hello-api 전송
6-2. 톰캣 서버에서 스프링으로 hello-api 전송
6-3. 스프링에서 hello-api 찾기
6-4. hello-api 에서 @ResponseBody 발견 -> 그대로 전송해야겠다고 인식
6-5. 보내야하는 데이터가 객체임을 확인 -> JSON 방식으로 데이터 만들어서 HTTP 응답에 반환함(스프링 기본 정책)
6-6. HttpMessageConverter 동작 ( 문자열이면 StringHttpMessageConverter 동작, 객체면 Jackson2HttpMessageConverter 동작 )
* HTTP Accecpt 헤더와 서버의 컨트롤러 반환 타입 정보를 조합해서 다른 타입을 요청할 수도 있다.
6-7.웹 브라우저로 JSON(name: spring!!) 데이터를 전송
- Converter 는 보통 디폴트로 세팅이 되어있고 실무에서 거의 건드릴 일이 없으므로 엄청 깊게 관심을 가질 필요는 없다.
'Java Spring > 스프링 입문' 카테고리의 다른 글
[Java Spring] 1-9. 회원 도메인과 리포지토리 만들기 (2) | 2023.01.30 |
---|---|
[Java Spring] 1-8. 비즈니스 요구사항 정리 (2) | 2023.01.30 |
[Java Spring] 1-6. MVC와 템플릿 엔진 (2) | 2023.01.30 |
[Java Spring] 1-5. 정적 컨텐츠 (0) | 2023.01.30 |
[Java Spring] 1-4. 빌드하고 실행하기 (2) | 2023.01.30 |