[Practice] 관리자 API 만들기 (2)
2021. 4. 15. 13:31ㆍSpring/Practice
1. 문제
- 사용자 상세 조회를 조회하는 API
- ResponseMessage 클래스로 추상화해서 전송
{
"header": {
result: true|false,
resultCode: string,
message: error message or alert message,
status: http result code
},
"body": 내려야 할 데이터가 있는 경우 Body를 통해 전송
}
2. 풀이
- ResponseMessageHeader.java
package com.example.jpa.sample.user.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ResponseMessageHeader {
private Boolean result;
private String resultCode;
private String message;
private int status;
}
- ResponseMessage.java
package com.example.jpa.sample.user.model;
import com.example.jpa.sample.user.entity.User;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import java.util.Optional;
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
public class ResponseMessage {
ResponseMessageHeader header;
Object data;
public static ResponseMessage fail(String message) {
return ResponseMessage.builder()
.header(ResponseMessageHeader.builder()
.result(false)
.resultCode("")
.message(message)
.status(HttpStatus.BAD_REQUEST.value())
.build())
.data(null)
.build();
}
public static ResponseMessage success(Object data) {
return ResponseMessage.builder()
.header(ResponseMessageHeader.builder()
.result(true)
.resultCode("")
.message("")
.status(HttpStatus.OK.value())
.build())
.data(data)
.build();
}
// private Long totalCount;
// private List<User> data;
}
- ApiAdminUserController.java
package com.example.jpa.sample.user.controller;
import com.example.jpa.sample.user.entity.User;
import com.example.jpa.sample.user.model.ResponseMessage;
import com.example.jpa.sample.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Optional;
@RequiredArgsConstructor
@RestController
public class ApiAdminUserController {
private final UserRepository userRepository;
/*
// 문제 1
@GetMapping("/api/admin/user")
public ResponseMessage userList() {
Long totalUserCount = userRepository.count();
List<User> userList = userRepository.findAll();
return ResponseMessage.builder()
.totalCount(totalUserCount)
.data(userList)
.build();
}
*/
// 문제 2
@GetMapping("/api/admin/user/{id}")
public ResponseEntity<?> userDetail(@PathVariable Long id) {
Optional<User> user = userRepository.findById(id);
if(!user.isPresent()) {
return new ResponseEntity<>(ResponseMessage.fail("사용자 정보가 존재하지 않습니다."), HttpStatus.BAD_REQUEST);
}
return ResponseEntity.ok().body(ResponseMessage.success(user));
}
}
728x90
'Spring > Practice' 카테고리의 다른 글
[Practice] 관리자 API 만들기 (4) (0) | 2021.04.15 |
---|---|
[Practice] 관리자 API 만들기 (3) (0) | 2021.04.15 |
[Practice] 관리자 API 만들기 (1) (0) | 2021.04.15 |
[Practice] 사용자 API 만들기 (15) (0) | 2021.04.14 |