Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- java
- 코딩테스트실력진단
- BOJ
- 이것이자바다
- KT포트포워딩
- 스파르타코딩클럽
- 백준
- 컴퓨터비전
- 운영체제
- 백준평범한배낭
- 백준온라인저지
- 웹개발기초
- 백준10828
- 코테
- 확인문제
- 백준9012
- 딥러닝
- 백준스택
- 코드트리
- 가운데를말해요
- 이것이자바다확인문제
- 2019카카오코테
- BOJ1655
- 합성곱연산
- 윤곽선검출
- 이것이자바다9장
- 카카오코테
- 백준가운데를말해요
- 냅색알고리즘
- 백준괄호
Archives
- Today
- Total
코딩하는 락커
[Spring Boot를 이용한 RESTful Web Services 개발] 13~15강 본문
🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service
[Spring Boot를 이용한 RESTful Web Services 개발] 13~15강
락꿈사 2022. 2. 6. 18:04User Controller - POST HTTP Method
- HTTP Method 중에서 Post를 처리할 수 있도록 @PostMapping("url") 어노테이션 사용
- 클라이언트로부터 post method를 통해서 추가하고자 하는 메소드를 user domain 타입으로 받기
- Post, Put등 클라이언트로부터 Form data 타입이 아닌 json, xml등 오브젝트 형태의 데이터를 받기 위해서 매개변수 타입에 @RequestBody 선언해줘야 함
- 클라이언트에서 전달하는 데이터 포맷에 일치하는 필드의 값을 매개변수 클래의 값과 매핑시켜서 저장
@PostMapping("/users")
public void createUser(@RequestBody User user){ //전달받고자 하는 데이터가 RequestBody 형식의 역할을 함을 의미
User savedUser = service.save(user);
}
HTTP Status Code 제어
- 응답코드 값을 제어하기 위해서 Servlet URI Component build 클래스 사용
- 요청된 사용자 추가 후, 어떤 URI를 통해서 추가된 리소스 확인할 수 있는지도 반환 (이때 반환된 리소스로 상세 정보를 확인할 수 있음)
public ResponseEntity<User> createUser(@RequestBody User user){ //반환하는 값이 User 클래스 값임
User savedUser = service.save(user);
URI location = ServletUriComponentsBuilder.fromCurrentRequest()// 현재 가지고 있는 Request 값을 사용한다는 의미
.path("/{id}")// 반환할 때 URI 뒤에 /{id}를 추가
.buildAndExpand(savedUser.getId()) //{id}에 savedUser.getId()값을 넣어줌
.toUri(); //위 모든 것을 URI형태로 변환
return ResponseEntity.created(location).build(); //위 location을 빌드해서 반환함
}
HTTP Status Code 제어를 위한 Exception Handling
- 존재하지 않는 데이터를 클라이언트가 요청했을 경우 200ok가 아니라 다른 Status Code를 발생시키기
@GetMapping("/users/{id}")
public User retrieveUser(@PathVariable int id){
User user = service.findOne(id);
if (user == null){
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
return user;
}
package com.example.restfulwebservice.user;
public class UserNotFoundException extends RuntimeException { //실행시 발생하는 오류로 처리
public UserNotFoundException(String message) {
super(message); //생성자는 부모 클래스로부터 전달받은 메시지로 처리
}
}
- HTTP Status Code 오류
- 2XX : 요청 성공
- 4XX : 클라이언트 요청 오류
- 5XX : 서버 오류
- 500번대는 서버 오류이므로 500번대 오류 말고 다른 오류를 발생시키기
- @ResponseStatus(NOT_FOUND) 어노테이션을 선언하여 404번 오류 발생시키기
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_FOUND)
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) {
super(message);
}
}
'🍃 Spring > 🌱 Spring Boot를 이용한 RESTful Web Service' 카테고리의 다른 글
[Spring Boot를 이용한 RESTful Web Services 개발] 17강 (0) | 2022.02.07 |
---|---|
[Spring Boot를 이용한 RESTful Web Services 개발] 16강 (0) | 2022.02.07 |
[Spring Boot를 이용한 RESTful Web Services 개발] 11~12강 (0) | 2022.02.05 |
[Spring Boot를 이용한 RESTful Web Services 개발] 9~10강 (0) | 2022.02.05 |
[Spring Boot를 이용한 RESTful Web Services 개발] 8강 (0) | 2022.02.04 |
Comments