diff --git a/build.gradle b/build.gradle index 4070cf3..63e1ad4 100644 --- a/build.gradle +++ b/build.gradle @@ -30,14 +30,20 @@ dependencies { runtimeOnly 'com.h2database:h2' implementation 'mysql:mysql-connector-java:8.0.29' + + // swagger implementation 'io.springfox:springfox-swagger2:2.9.2' implementation 'io.springfox:springfox-swagger-ui:2.9.2' + // swagger 어노테이션 라이브러리 + implementation 'io.swagger:swagger-annotations:1.5.21' + // AWS 연동 implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' // 채팅 - WebSocket implementation 'org.springframework.boot:spring-boot-starter-websocket' + } tasks.named('test') { diff --git a/src/main/java/com/zatch/zatchserver/controller/UserController.java b/src/main/java/com/zatch/zatchserver/controller/UserController.java index c860292..cc80b77 100644 --- a/src/main/java/com/zatch/zatchserver/controller/UserController.java +++ b/src/main/java/com/zatch/zatchserver/controller/UserController.java @@ -7,9 +7,11 @@ import com.zatch.zatchserver.dto.*; import com.zatch.zatchserver.service.AuthService; import com.zatch.zatchserver.service.UserService; -import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -17,6 +19,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import java.nio.charset.Charset; import java.util.*; @RequiredArgsConstructor @@ -26,8 +29,11 @@ public class UserController { private final UserService userService; private final AuthService authService; + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Success", response = GetUserResDto.class, examples = @Example(@ExampleProperty(value = "{'property1': 'value1', 'property2': 'value2'}", mediaType = MediaType.APPLICATION_JSON_VALUE))) + }) @PostMapping("/new") - @ApiOperation(value = "회원가입", notes = "회원가입 API") + @ApiOperation(value = "회원가입", notes = "회원가입 API", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity postUser(@RequestBody PostUserReqDto postUserReqDto, HttpServletResponse response) { // 이메일을 통해 회원가입 or 로그인 check String isSignup = userService.loginOrSignup(postUserReqDto.getEmail()); @@ -41,15 +47,17 @@ public ResponseEntity postUser(@RequestBody PostUserReqDto postUserReqDto, HttpS Collections.shuffle(adjectives); Collections.shuffle(animals); + String nickname = adjectives.get(0) + " " + animals.get(0); + User newUser = new User( postUserReqDto.getName(), postUserReqDto.getEmail(), - adjectives.get(0) + " " + animals.get(0) + nickname ); userService.join(newUser); - PostUserResDto postUserResDto = new PostUserResDto(newUser.getName(), newUser.getEmail(), adjectives.get(0) + " " + animals.get(0)); + PostUserResDto postUserResDto = new PostUserResDto(newUser.getName(), newUser.getEmail(), nickname); // 토큰 String email = postUserReqDto.getEmail(); @@ -58,7 +66,12 @@ public ResponseEntity postUser(@RequestBody PostUserReqDto postUserReqDto, HttpS response.addHeader("ACCESS_TOKEN", accessToken); String token = userService.token(Long.valueOf(userId), accessToken); - return new ResponseEntity(DefaultRes.res(StatusCode.OK, ResponseMessage.CREATED_USER, postUserReqDto+" / accessToken : "+token+" / userId : "+userId), HttpStatus.OK); + HttpHeaders header = new HttpHeaders(); + header.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); + + GetUserResDto getUserResDto = new GetUserResDto(Long.valueOf(userId), postUserReqDto.getName(), nickname, postUserReqDto.getEmail()); + + return ResponseEntity.ok().body(getUserResDto); } // 로그인 diff --git a/src/main/java/com/zatch/zatchserver/domain/User.java b/src/main/java/com/zatch/zatchserver/domain/User.java index 8deb039..7795823 100644 --- a/src/main/java/com/zatch/zatchserver/domain/User.java +++ b/src/main/java/com/zatch/zatchserver/domain/User.java @@ -1,8 +1,10 @@ package com.zatch.zatchserver.domain; import lombok.Getter; +import lombok.Setter; @Getter +@Setter public class User { private Long id; private String name; @@ -15,7 +17,6 @@ public class User { /*---Constructor---*/ public User(String name, String email, String nickname) { this.name = name; - this.nickname = nickname; this.email = email; } diff --git a/src/main/java/com/zatch/zatchserver/dto/GetUserResDto.java b/src/main/java/com/zatch/zatchserver/dto/GetUserResDto.java index 547a4c7..9974fe7 100644 --- a/src/main/java/com/zatch/zatchserver/dto/GetUserResDto.java +++ b/src/main/java/com/zatch/zatchserver/dto/GetUserResDto.java @@ -2,11 +2,22 @@ import lombok.AllArgsConstructor; import lombok.Getter; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; @Getter @AllArgsConstructor +@ApiModel(description = "User 정보") public class GetUserResDto { + @ApiModelProperty(value = "User Id", example = "1") + private Long user_id; + + @ApiModelProperty(value = "User 이름", example = "김수정") private String name; + + @ApiModelProperty(value = "User 닉네임", example = "행복한 수달") private String nickname; + + @ApiModelProperty(value = "User 이메일", example = "email123@sungshin.ac.kr") private String email; }