REST
웹의 자원을 관리하는 아키텍처/구조
1. 자원(Resources), 행동(Method), 표현
2. HTTP 프로토콜(규약)을 이용한 클라이언트와 서버 간의 일관성 통신 구성
REST API
REST 아키텍처에 따른 API
1. REST 기반의 웹서비스 인터페이스 구축
2. HTTP 요청을 통해 자원(데이터)을 CRUD 할 수 있도록 제공
RESTful API
REST API의 아키텍처를 잘 사용하는지 대한 개념
1. 조건
1. 일관성 : "/member/XXXX", "/board/XXXX"
2. 적절한 HTTP METHOD : POST(등록), GET(조회), PUT(수정), DELETE(삭제)
3. 무상태성
4. 응답 타입은 JSON/XML 제공
@SpringBootApplication
스프링부트 환경 설정
1. @SpringBootConfiguration : 프로젝트 내 @Configuration 어노테이션을 찾아서 bean(객체) 설정/등록
2. @EnableAutoConfiguration : Spring Boot가 자동으로 필요한 bean(객체)을 설정/등록, 내장형 TomCat 설정
3. @ComponentScan : 현재 클래스 기준으로 현 패키지 및 하위 패키지 내 자동으로 컴포넌트(클래스)를 스캔해서 스프링컨테이너 등록
- 스캔 대상 : @Component, @RestController, @Controller, @Service, @Repository 등
- 주의할점 : 현재 AppStart 클래스 기준 상위 패키지는 스캔되지 않으므로 프로젝트 항상 최상위 폴더에 위치
주요 어노테이션
- @Component : bean(객체) 자동 생성
- @Controller : HTTP 요청과 응답(view) 처리, + @Component
- @RestController : HTTP 요청과 응답(json) 처리, + @Controller + @ResponseBody
- @PostMapping : POST 방식 요청 매핑, 주로 Create
- @GetMapping : GET 방식 요청 매핑, 주로 Read
- @PutMapping : PUT 방식 요청 매핑, 주로 Update
- @DeleteMapping : DELETE 방식 요청 매핑, 주로 Delete
- @RequestMapping : 주로 class 요청 매핑, 공통 URL 정의
@RequestMapping("/member")
class Controller {
@GetMapping("/find") // "/member/find"
}
- @ResponseBody : 요청 처리 이후 응답 반환 시 JAVA 타입에서 JSON 타입으로 자동 변환
- @RequestParam : 쿼리스트링(GET/DELETE), 단일 매개변수(int/String/List/Map)
- @ModelAttribute : 쿼리스트링(GET/DELETE), 복수 매개변수(DTO/VO)
- @RequestBody : HTTP 본문(POST/PUT), 본문 객체(JSON), DTO/Map/List
HTTP 자료 포함
- 방법1. 쿼리스트링 : URL 경로상의 매개변수 표현, GET/POST/PUT/DELETE method, 매개변수 노출O
- 방법2. BODY(본문) : HTTP BODY에 매개변수 표현, POST/PUT method, 매개변수 노출X