Spring Boot2 (5) – Design api interface and data structure
This commit is contained in:
@@ -1,38 +0,0 @@
|
|||||||
package com.rest.api.controller;
|
|
||||||
|
|
||||||
import com.rest.api.entity.User;
|
|
||||||
import com.rest.api.repo.UserJpaRepo;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import io.swagger.annotations.ApiParam;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Api(tags = {"1. User"})
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@RestController
|
|
||||||
public class UserController {
|
|
||||||
|
|
||||||
private final UserJpaRepo userJpaRepo;
|
|
||||||
|
|
||||||
@ApiOperation(value = "회원 조회", notes = "모든 회원을 조회한다")
|
|
||||||
@GetMapping(value = "/user")
|
|
||||||
public List<User> findAllUser() {
|
|
||||||
return userJpaRepo.findAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiOperation(value = "회원 입력", notes = "모든 회원을 조회한다")
|
|
||||||
@PostMapping(value = "/user")
|
|
||||||
public User save(@ApiParam(value = "회원이름", required = true) @RequestParam String name,
|
|
||||||
@ApiParam(value = "회원이메일", required = true) @RequestParam String email) {
|
|
||||||
User user = new User();
|
|
||||||
user.setName(name);
|
|
||||||
user.setEmail(email);
|
|
||||||
return userJpaRepo.save(user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
69
src/main/java/com/rest/api/controller/v1/UserController.java
Normal file
69
src/main/java/com/rest/api/controller/v1/UserController.java
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
package com.rest.api.controller.v1;
|
||||||
|
|
||||||
|
import com.rest.api.entity.User;
|
||||||
|
import com.rest.api.model.response.BasicResult;
|
||||||
|
import com.rest.api.model.response.CommonResult;
|
||||||
|
import com.rest.api.model.response.ListResult;
|
||||||
|
import com.rest.api.repo.UserJpaRepo;
|
||||||
|
import com.rest.api.service.ResponseService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import io.swagger.annotations.ApiParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@Api(tags = {"1. User"})
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping(value = "/v1")
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
private final UserJpaRepo userJpaRepo;
|
||||||
|
private final ResponseService responseService; // 결과를 처리할 Service
|
||||||
|
|
||||||
|
@ApiOperation(value = "회원 리스트 조회", notes = "모든 회원을 조회한다")
|
||||||
|
@GetMapping(value = "/users")
|
||||||
|
public ListResult<User> findAllUser() {
|
||||||
|
// 결과데이터가 여러건인경우 getListResult를 이용해서 결과를 출력한다.
|
||||||
|
return responseService.getListResult(userJpaRepo.findAll());
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "회원 단건 조회", notes = "userId로 회원을 조회한다")
|
||||||
|
@GetMapping(value = "/user/{userId}")
|
||||||
|
public BasicResult<User> findUserById(@ApiParam(value = "회원ID", required = true) @RequestParam int userId) {
|
||||||
|
// 결과데이터가 단일건인경우 getBasicResult를 이용해서 결과를 출력한다.
|
||||||
|
return responseService.getBasicResult(userJpaRepo.findById(userId).orElse(null));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다")
|
||||||
|
@PostMapping(value = "/user")
|
||||||
|
public BasicResult<User> save(@ApiParam(value = "회원이름", required = true) @RequestParam String name,
|
||||||
|
@ApiParam(value = "회원이메일", required = true) @RequestParam String email) {
|
||||||
|
User user = new User();
|
||||||
|
user.setName(name);
|
||||||
|
user.setEmail(email);
|
||||||
|
return responseService.getBasicResult(userJpaRepo.save(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "회원 수정", notes = "회원정보를 수정한다")
|
||||||
|
@PutMapping(value = "/user")
|
||||||
|
public BasicResult<User> modify(
|
||||||
|
@ApiParam(value = "회원ID", required = true) @RequestParam int userId,
|
||||||
|
@ApiParam(value = "회원이름", required = true) @RequestParam String name,
|
||||||
|
@ApiParam(value = "회원이메일", required = true) @RequestParam String email) {
|
||||||
|
User user = new User();
|
||||||
|
user.setId(userId);
|
||||||
|
user.setName(name);
|
||||||
|
user.setEmail(email);
|
||||||
|
return responseService.getBasicResult(userJpaRepo.save(user));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "회원 삭제", notes = "userId로 회원정보를 삭제한다")
|
||||||
|
@DeleteMapping(value = "/user/{userId}")
|
||||||
|
public CommonResult delete(
|
||||||
|
@ApiParam(value = "회원ID", required = true) @RequestParam int userId) {
|
||||||
|
userJpaRepo.deleteById(userId);
|
||||||
|
// 성공 결과 정보만 필요한경우 getSuccessResult()를 이용하여 결과를 출력한다.
|
||||||
|
return responseService.getSuccessResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/main/java/com/rest/api/model/response/BasicResult.java
Normal file
10
src/main/java/com/rest/api/model/response/BasicResult.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package com.rest.api.model.response;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class BasicResult<T> extends CommonResult {
|
||||||
|
private T data;
|
||||||
|
}
|
||||||
20
src/main/java/com/rest/api/model/response/CommonResult.java
Normal file
20
src/main/java/com/rest/api/model/response/CommonResult.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package com.rest.api.model.response;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class CommonResult {
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "응답 성공여부 : true/false")
|
||||||
|
private boolean success;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "응답 코드 번호 : > 0 정상, < 0 비정상")
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "응답 메시지")
|
||||||
|
private String msg;
|
||||||
|
}
|
||||||
|
|
||||||
12
src/main/java/com/rest/api/model/response/ListResult.java
Normal file
12
src/main/java/com/rest/api/model/response/ListResult.java
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package com.rest.api.model.response;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class ListResult<T> extends CommonResult {
|
||||||
|
private List<T> list;
|
||||||
|
}
|
||||||
68
src/main/java/com/rest/api/service/ResponseService.java
Normal file
68
src/main/java/com/rest/api/service/ResponseService.java
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
package com.rest.api.service;
|
||||||
|
|
||||||
|
import com.rest.api.model.response.BasicResult;
|
||||||
|
import com.rest.api.model.response.CommonResult;
|
||||||
|
import com.rest.api.model.response.ListResult;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class ResponseService {
|
||||||
|
|
||||||
|
// enum으로 api 요청 결과에 대한 code, message를 정의합니다.
|
||||||
|
public enum CommonResponse {
|
||||||
|
SUCCESS(0, "성공하였습니디."),
|
||||||
|
FAIL(-1, "실패하였습니다.");
|
||||||
|
|
||||||
|
int code;
|
||||||
|
String msg;
|
||||||
|
|
||||||
|
CommonResponse(int code, String msg) {
|
||||||
|
this.code = code;
|
||||||
|
this.msg = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMsg() {
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 단일건 결과를 처리하는 메소드
|
||||||
|
public <T> BasicResult<T> getBasicResult(T data) {
|
||||||
|
BasicResult<T> result = new BasicResult<>();
|
||||||
|
result.setData(data);
|
||||||
|
setSuccessResult(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// 다중건 결과를 처리하는 메소드
|
||||||
|
public <T> ListResult<T> getListResult(List<T> list) {
|
||||||
|
ListResult<T> result = new ListResult<>();
|
||||||
|
result.setList(list);
|
||||||
|
setSuccessResult(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// 성공 결과만 처리하는 메소드
|
||||||
|
public CommonResult getSuccessResult() {
|
||||||
|
CommonResult result = new CommonResult();
|
||||||
|
setSuccessResult(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// 실패 결과만 처리하는 메소드
|
||||||
|
public CommonResult getFailResult() {
|
||||||
|
CommonResult result = new CommonResult();
|
||||||
|
result.setSuccess(false);
|
||||||
|
result.setCode(CommonResponse.FAIL.getCode());
|
||||||
|
result.setMsg(CommonResponse.FAIL.getMsg());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
// 결과 모델에 api 요청 성공 데이터를 세팅해주는 메소드
|
||||||
|
private void setSuccessResult(CommonResult result) {
|
||||||
|
result.setSuccess(true);
|
||||||
|
result.setCode(CommonResponse.SUCCESS.getCode());
|
||||||
|
result.setMsg(CommonResponse.SUCCESS.getMsg());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,5 +8,5 @@ spring:
|
|||||||
username: sa
|
username: sa
|
||||||
jpa:
|
jpa:
|
||||||
database-platform: org.hibernate.dialect.H2Dialect
|
database-platform: org.hibernate.dialect.H2Dialect
|
||||||
properties.hibernate.hbm2ddl.auto: none
|
#properties.hibernate.hbm2ddl.auto: none
|
||||||
showSql: true
|
showSql: true
|
||||||
Reference in New Issue
Block a user