멱등성이란?
같은 요청이 여러번들어와도 (여러번 조회해도) 결과가 변하지 않는 특성.
GET: Read. 클라이언트가 서버에게 리소스를 요청하기 위한 메소드. 동일한 GET 요청을 여러 번 보내더라도 리소스에는 영향을 미치지 않고 같은 응답을 받을 수 있으므로 멱등하다.
PUT: Craete, Update. 없으면 만들고, 있으면 업데이트 한다. 동일한 위치에 동일한 데이터를 업데이트 하려고 할 때 사용되므로 몇 번 요청해도 동일 결과를 얻을 수 있다. 멱등하다. 클라이언트가 리소스의 위치를 명시적으로 지정한다.
DELETE : 삭제. 몇 번 요청을 하든 게시글이 항상 삭제된 상태를 유지하므로 멱등성을 가진다.
POST: Create. 새로운 리소스를 생성한다. 서버가 리소스의 위치를 결정하고 응답으로 제공한다.
GET/PUT/DELETE은 멱등성을 갖지만, POST는 멱등성을 갖지 않는다. 예를 들어 결제 요청은 1번만 이루어지고 중복으로 결제 요청이 들어온다면 요청을 거부할 수 있어야 한다. 즉 리소스의 상태에 따라 요청의 결과가 바뀌는 것이 바람직하다.
Spring Boot로 구현한 REST API
- 쿼리 파라미터는 @RequestParam으로 처리한다.
- 요청 body를 포함하는 post, put 메소드의 경우 요청 body를 @RequestBody를 적용한 객체로 처리할 수 있다.
- JSON 요청 body를 객체로 받을 때, 필드의 이름이 올바르게 매칭되지 않으면 필드가 객체인 경우 null, 기본 타입일 경우 기본값으로 초기화한다.
JPA, Spring Data SPA
- JPA는 객체 관계 매핑(ORM )이라고 불리는 기술, 자바에서 DB조작 관련 코드를 객체 지향적으로 작성할 수 있도록 돕는인터페이스이다.
- JPA의 대표적은 구현체로는 Hibernate가 있고 스트링 데이터 JPA에서도 기본적으로 사용한다.
- Spring Data JPA를 사용하면 @Transactional 등의 기능을 통해 트랜잭션 작업을 자동화 할 수 있다.
- JPA는 데이터 베이스와의 연결을 담당하는 JDBC를 추상화하므로, JPA를 추상화한 스프링 데이터 JPA는 자연스럽게 JDBC를 사용한다.
알아두면 좋을 어노테이션
- @SpringBootApplication : 스프링 부트를 시작할 때 사용된다. 이 어노테이션이 있는 클래스는 진입점을 나타내며 여기서 다른 구성 요소들이 자동으로 스캔된다.
- @RestController: = @Controller + @ResponseBody. 해당 서비스가 RESTful 웹 서비스의 컨트롤러임을 나타낸다. 메서드 반환 값이 HTTP응답 본문에 직접 작성되는 것을 의미한다.
- @RequestMapping : 요청 경로와 클래스를 매핑하는데 사용된다. (메서드 매핑에도 사용하지만 메서드엔 아래 메서드가 더 자주 쓰이는듯)
- @GetMapping, PostMapping, PutMapping,DeleteMapping : 요청 경로와 메서드를 매핑하는데 쓰인다.
- @Autowired: 의존성 주입 할 때 사용된다. 해당 필드나 생성자에 의존하는 빈(객체) 를 자동으로 주입한다.
- @Service : 비즈니스 로직을 실행하는 서비스 클래스임을 나타냄
- @Repository : 데이터 액세스 계층의 구현체임을 나타냄.
- @PathVariable : 경로 변수를 매핑하는데 사용된다. 요청 경로에서 변수 값을 추출, 메서드 매개변수로 나타낸다.
- @RequestParam : 요청 매개변수를 매핑하는데 사용된다. 요청 URL에서 쿼리 매개변수 값을 추출해 메서드 매개변수로 전달한다.
@Transient: 특정 필드가 실제 DB 테이블의 컬럼과 매핑되지 않게 함
'기타' 카테고리의 다른 글
redis 데이터 구조 학습 (1) | 2024.12.02 |
---|---|
퀴즈 9회차 (0) | 2024.05.02 |
퀴즈 7회차 (0) | 2024.04.12 |
퀴즈 6회 오답노트 (1) | 2024.03.30 |
퀴즈 오답노트 (0) | 2024.03.22 |