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
- 백준
- 냅색알고리즘
- KT포트포워딩
- 가운데를말해요
- 백준9012
- 백준가운데를말해요
- 카카오코테
- 백준괄호
- java
- 이것이자바다9장
- 확인문제
- 딥러닝
- 이것이자바다
- 백준평범한배낭
- BOJ
- 이것이자바다확인문제
- 윤곽선검출
- 코딩테스트실력진단
- 합성곱연산
- 코드트리
- 백준온라인저지
- 스파르타코딩클럽
- 컴퓨터비전
- 2019카카오코테
- 백준10828
- 운영체제
- 코테
- 웹개발기초
- 백준스택
- BOJ1655
Archives
- Today
- Total
코딩하는 락커
[Spring Boot를 이용한 RESTful Web Services 개발] 27~28강 본문
🍃 Spring/🌱 Spring Boot를 이용한 RESTful Web Service
[Spring Boot를 이용한 RESTful Web Services 개발] 27~28강
락꿈사 2022. 2. 11. 14:46HATEOAS 설명
- HATEOAS : Hypermedia As the Engine Of Application State의 약자로 현재 사용하고 있는 RESTful의 리소스와 연관된, 또는 호출 가능한 추가적인 자원의 상태 정보를 함께 제공해주는 기능
- 하나의 Resource에서 파생하는 여러가지 추가 data 전달 작업 가능
- 리처드슨의 REST 성숙도 모델 (https://jinson.tistory.com/190 <- 링크 참고 )
- Level 0 : REST API라고 보기 어려움. 네트워크를 통해서 컴퓨터가 가지고 있는 자원을 의미 없이 전달해주는 단계
- Level 1 : Resources 만을 이용하는 단계
- Level 2 : HTTP 상태를 이용하는 단계
- Level 3: Resource의 정보를 추가로 새로운 요소와 함께 전달해주는 단계
Level3 단계의 REST API 구현을 위한 HATEOAS 적용
- pom.xml 파일에 의존성 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
</dependency>
- UserCotroller 클래스의 retrieveUser 메소드에 적용
- 현재 가지고 있는 전체 사용자 목록 보기 메소드인 retrieveAllUsers() 메소드와 "all-users"라는 이름을 링크하여 하이퍼미디어로 연결
- 이 값을 user 데이터와 함께 클라이언트에게 반환함
- User DTO의 @JsonFilter 어노테이션 주석처리
import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@GetMapping("/users/{id}")
public EntityModel<User> retrieveUser(@PathVariable int id){
User user = service.findOne(id);
if (user == null){
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
// EnityModel 객체 생성하여 위에서 받아온 user 객체를 매개변수로 넣어줌
EntityModel<User> model = EntityModel.of(user);
// user값을 반환할 때 클라이언트가 사용할 수 있는 추가적인 정보 링크를 하이퍼미디어 타입으로 넣어줌
// 이 클래스가 가지고 있는 data 중에서 retrieveAllUsers()이라는 메소드를 넣어줌
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
// 위에서 생성했던 model 객체에 "all-users"라는 이름으로 링크 추가
model.add(linkTo.withRel("all-users"));
return model;
}
'🍃 Spring > 🌱 Spring Boot를 이용한 RESTful Web Service' 카테고리의 다른 글
[Spring Boot를 이용한 RESTful Web Services 개발] 31강 (0) | 2022.03.03 |
---|---|
[Spring Boot를 이용한 RESTful Web Services 개발] 29~30강 (0) | 2022.03.03 |
[Spring Boot를 이용한 RESTful Web Services 개발] 25~26강 (0) | 2022.02.09 |
[Spring Boot를 이용한 RESTful Web Services 개발] 22~24강 (0) | 2022.02.09 |
[Spring Boot를 이용한 RESTful Web Services 개발] 20~21강 (0) | 2022.02.08 |
Comments