2 Commits

Author SHA1 Message Date
kimyonghwa
4afd28eb4a bugfix : UserJpaRepo pk type change
Intger to Long
2019-04-16 10:18:54 +09:00
kimyonghwa
11f073de61 SpringBoot2로 Rest api 만들기(4) – Swagger API 문서 자동화 2019-04-16 09:55:22 +09:00
7 changed files with 28 additions and 157 deletions

View File

@@ -1,17 +1,15 @@
package com.rest.api.controller.v1;
import com.rest.api.entity.User;
import com.rest.api.model.response.CommonResult;
import com.rest.api.model.response.ListResult;
import com.rest.api.model.response.SingleResult;
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.*;
import java.util.List;
@Api(tags = {"1. User"})
@RequiredArgsConstructor
@RestController
@@ -19,53 +17,22 @@ import org.springframework.web.bind.annotation.*;
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 = "모든 회원을 조회한다")
@GetMapping(value = "/user")
public List<User> findAllUser() {
return userJpaRepo.findAll();
}
@ApiOperation(value = "회원 단건 조회", notes = "userId로 회원을 조회한다")
@GetMapping(value = "/user/{msrl}")
public SingleResult<User> findUserById(@ApiParam(value = "회원ID", required = true) @PathVariable long msrl) {
// 결과데이터가 단일건인경우 getBasicResult를 이용해서 결과를 출력한다.
return responseService.getSingleResult(userJpaRepo.findById(msrl).orElse(null));
}
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다")
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다.")
@PostMapping(value = "/user")
public SingleResult<User> save(@ApiParam(value = "회원아이디", required = true) @RequestParam String uid,
@ApiParam(value = "회원이름", required = true) @RequestParam String name) {
public User save(@ApiParam(value = "회원아이디", required = true) @RequestParam String uid,
@ApiParam(value = "회원이름", required = true) @RequestParam String name) {
User user = User.builder()
.uid(uid)
.name(name)
.build();
return responseService.getSingleResult(userJpaRepo.save(user));
}
@ApiOperation(value = "회원 수정", notes = "회원정보를 수정한다")
@PutMapping(value = "/user")
public SingleResult<User> modify(
@ApiParam(value = "회원번호", required = true) @RequestParam long msrl,
@ApiParam(value = "회원아이디", required = true) @RequestParam String uid,
@ApiParam(value = "회원이름", required = true) @RequestParam String name) {
User user = User.builder()
.msrl(msrl)
.uid(uid)
.name(name)
.build();
return responseService.getSingleResult(userJpaRepo.save(user));
}
@ApiOperation(value = "회원 삭제", notes = "userId로 회원정보를 삭제한다")
@DeleteMapping(value = "/user/{msrl}")
public CommonResult delete(
@ApiParam(value = "회원번호", required = true) @PathVariable long msrl) {
userJpaRepo.deleteById(msrl);
// 성공 결과 정보만 필요한경우 getSuccessResult()를 이용하여 결과를 출력한다.
return responseService.getSuccessResult();
return userJpaRepo.save(user);
}
}

View File

@@ -1,6 +1,17 @@
package com.rest.api.entity;
import lombok.*;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;

View File

@@ -1,20 +0,0 @@
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;
}

View File

@@ -1,12 +0,0 @@
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;
}

View File

@@ -1,10 +0,0 @@
package com.rest.api.model.response;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SingleResult<T> extends CommonResult {
private T data;
}

View File

@@ -1,68 +0,0 @@
package com.rest.api.service;
import com.rest.api.model.response.CommonResult;
import com.rest.api.model.response.ListResult;
import com.rest.api.model.response.SingleResult;
import org.springframework.stereotype.Service;
import java.util.List;
@Service // 해당 Class가 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> SingleResult<T> getSingleResult(T data) {
SingleResult<T> result = new SingleResult<>();
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());
}
}

View File

@@ -8,5 +8,8 @@ spring:
username: sa
jpa:
database-platform: org.hibernate.dialect.H2Dialect
properties.hibernate.hbm2ddl.auto: update
showSql: true
#properties.hibernate.hbm2ddl.auto: none
showSql: true
messages:
basename: i18n/exception
encoding: UTF-8