240514
오늘의 학습
● 1. API
● 2. Restful API
● 3. Controller & RestController
● 4. ModelAttribute
● 5. RequestBody
1. API ( Application Programming Interface )
시스템과 시스템간의 상호작용을 하기 위한 규칙
이러한 규칙이 있기에 개발자는 복잡한 시스템의 내부 구현을 몰라도 특정 기능을 사용하거나
데이터를 주고받을 수 있습니다.
2. Restful API
REST(Representational State Transfer)
자원의 이동에 대한 규칙을 의미한다. GET/POST/PUT/DELETE
Restful API는 웹 API의 한 종류이다.
Restful API ⇒ 웹에서의 API ( 브라우저와 서버 간의 규칙 )
HTTP프로토콜 ⇒ 네트워크 통신 규칙
HTTP를 잘 활용하기 위해 나온 방법
3. @RestController & @Controller
@Controller
Controller 애노테이션은 직접 view나 html을 반환을 해줘야 한다.
옛날 방식의 이 컨트롤러는 view(html)를 직접 서버쪽에서 만들어서 반환을 해줘야 했었다.
@Controller
public class Main() {
@GetMapping("/api/hello")
public String hello() {
return "hello.html"; // view를 보내줘야했음.
}
}
@Controller
@ResponseBody // body에 넣어서 보냄으로 써 데이터 형태로 값이 넘어감.
public class Main() {
@GetMapping("/api/hello")
public String hello() {
return "hello";
}
}
@RestController
현재는 Restful한 api를 사용하기 때문에 반환타입을 대부분 데이터형식인 json을 주로 반환을 하게 된다.
프론트엔드와 백엔드가 나눠지면서 서버에서 화면을 만들어 낼 일이 줄어 들게 되었다.
즉, view를 보내는게 아닌 데이터를 보내는걸 추구하게 되었음.
@RestController
public class Main() {
@GetMapping("/api/hello")
public String hello() {
return "hello";
}
}
4. @ModelAttribute
@ModelAttribute
GET / POST 등등 다 사용 가능. 생략도 가능.
애너테이션은 쿼리스트링으로 값이 넘어오면 그 값들을 객체에 넣어줄 수 있게 해주는 애너테이션이다.
( 객체에 mapping해서 가져오는 형식이다. )
@RestController
public class Main() {
@GetMapping("/api/hello")
public String hello(@ModelAttribute Member member) {
return member;
}
}
5. @RequestBody
@RequestBody
json타입으로 데이터가 넘어올 때는 생략이 불가능하며 꼭 넣어줘야지 받을 수 있다.
데이터가 json형식으로 넘어왔을 때 그 값을 객체타입으로 간단하게 넣어줄 수 있게 해주는 애너테이션이다.
단, 객체의 필드값의 형태와 넘어오는 json객체의 요소의 이름이 동일해야 한다.
@RestController
public class Main() {
@GetMapping("/api/hello")
public String hello(@RequestBody Member member) {
return member;
}
}
# 오늘의 회고
오늘은 스프링의 1주차 강의 수강을 완료했다.
스프링의 기본적인 개념을 익혔으며 RestController와 Controller의 차이를 알았고,
API와 Restful API의 개념을 알게 되었다.
내일은 2주차 강의를 다 듣고 시간이 되면 애노테이션과 리플렉션의 개념을 잡으려고 한다.
'내일배움캠프 Spring 5기' 카테고리의 다른 글
내일배움캠프 22일차 TIL - Annotation (0) | 2024.05.19 |
---|---|
내일배움캠프 21일차 TIL - Spring(IoC, DI) (0) | 2024.05.16 |
내일배움캠프 19일차 TIL - Iterator (0) | 2024.05.12 |
내일배움캠프 18일차 TIL - 람다(메서드 참조, 생성자 참조) (0) | 2024.05.10 |
내일배움캠프 17일차 TIL - 함수형 인터페이스, 익명 클래스 (0) | 2024.05.09 |