250x250
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
- 클래스
- 코드
- JsonNode
- 정렬
- 계산 검색 방식
- 빅 오 표기법
- 트리
- CleanCode
- 리스트
- 클린코드
- 마크다운 테이블
- java
- @RequiredArgsConstructor
- 내부 정렬
- 선형 리스트
- query
- 마크다운
- code
- 쿠키
- 연결 리스트
- 인터페이스
- 쿼리메소드
- 배열
- WebClient
- mysql
- @ComponentScan
- 자료구조
- 클린
- @NoArgsConstructor
- 스택 큐 차이
Archives
- Today
- Total
Developer Cafe
HATEOAS 헤테우스 본문
728x90
클라이언트가 서버로부터 어떠한 요청을 할 때, 요청에 필요한 URI를 응답에 포함시켜 반환하는 것입니다
한명의 정보를 response해주는 api를 만듬과 동시에 유저 모두의 정보를 가진 api주소를 담아 주는 api를 만든다고 가정합니다.
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
@Size(min=2, message = "Name은 2글자 이상 입력해 주세요.")
private String name;
@Past
private Date joinDate;
private String password;
private String ssn;
}
// spring 2.1.8 이하 버전
@GetMapping("/users/{id}")
public Resource<User> retrieveUser(@PathVariable int id) {
User user = service.findOne(id);
if (user == null) {
throw new UserNotFoundException(String.format("ID[%s] not found", id));
}
// HATEOAS
Resource<User> resource = new Resource<>(user);
ControllerLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
resource.add(linkTo.withRel("all-users"));
return resource;
}
// spring 2.2 이상 버전
@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));
}
// HATEOAS
EntityModel<User> model = new EntityModel<>(user);
WebMvcLinkBuilder linkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
model.add(linkTo.withRel("all-users"));
return model;
}
결과
{
"id": 1,
"name": "gwise",
"joinDate": "2021-04-29T08:04:34.838+00:00",
"password": "pass1",
"ssn": "770530",
"_links": {
"all-users": {
"href": "http://localhost:8088/users"
}
}
}
728x90
'Spring' 카테고리의 다른 글
테스트 주도 개발 TDD (0) | 2021.03.10 |
---|---|
HttpServletResponse를 통해 컨트롤러에서 출력하기 (0) | 2021.02.18 |
Comments