diff --git a/build.gradle b/build.gradle index 3f2652e..9564827 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,8 @@ plugins { id 'java' } +apply plugin: 'java' +apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'org.dailystudio' @@ -20,8 +22,10 @@ repositories { } dependencies { + implementation('io.springfox:springfox-swagger2:+') + implementation('io.springfox:springfox-swagger-ui:+') + + compile "org.projectlombok:lombok:+" implementation 'org.springframework.boot:spring-boot-starter-web' - compileOnly 'org.projectlombok:lombok' - annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/src/main/java/org/dailystudio/springbootstudy/SpringbootstudyApplication.java b/src/main/java/org/dailystudio/springbootstudy/SpringbootstudyApplication.java index 574a96e..44a039e 100644 --- a/src/main/java/org/dailystudio/springbootstudy/SpringbootstudyApplication.java +++ b/src/main/java/org/dailystudio/springbootstudy/SpringbootstudyApplication.java @@ -6,8 +6,8 @@ @SpringBootApplication public class SpringbootstudyApplication { - public static void main(String[] args) { - SpringApplication.run(SpringbootstudyApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(SpringbootstudyApplication.class, args); + } } diff --git a/src/main/java/org/dailystudio/springbootstudy/config/SwaggerConfig.java b/src/main/java/org/dailystudio/springbootstudy/config/SwaggerConfig.java new file mode 100644 index 0000000..aae4943 --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/config/SwaggerConfig.java @@ -0,0 +1,24 @@ +package org.dailystudio.springbootstudy.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.any()) // 현재 RequestMapping으로 할당된 모든 URL 리스트를 추출 + .paths(PathSelectors.ant("/api/**")) // 그중 /api/** 인 URL들만 필터링 + .build(); + } + +} \ No newline at end of file diff --git a/src/main/java/org/dailystudio/springbootstudy/controller/UserController.java b/src/main/java/org/dailystudio/springbootstudy/controller/UserController.java new file mode 100644 index 0000000..f5b5f9d --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/controller/UserController.java @@ -0,0 +1,64 @@ +package org.dailystudio.springbootstudy.controller; + +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import org.dailystudio.springbootstudy.dto.user.UserInfoResDto; +import org.dailystudio.springbootstudy.dto.user.UserSaveReqDto; +import org.dailystudio.springbootstudy.service.UserService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/* + UserService의 메소드는 현재 깡통이야. + 디비와 연결을 하지 않았기 때문에 실제로 불러오는 값이 존재하지않아. + 이번 소스코드에서는 swagger의 기능들을 살펴보고 넘어가자. + */ + +@RestController +@RequestMapping("api/user") +@RequiredArgsConstructor +public class UserController { + + private final UserService userService; + + @ApiOperation(value = "유저 정보 저장하기", + notes = "유저 정보를 저장합니다.") + @ApiResponses(value = { + @ApiResponse(code = 201, message = "유저 저장 성공"), + @ApiResponse(code = 500, message = "서버에러") + }) + @PostMapping("/save") + public ResponseEntity saveUser(@RequestBody UserSaveReqDto userSaveReqDto) { + userService.save(userSaveReqDto); + return ResponseEntity.ok().build(); + } + + @GetMapping + public ResponseEntity> getAllUser() { + List resDtos = userService.getAll(); + return ResponseEntity.ok().body(resDtos); + } + + @GetMapping("/{idx}") + public ResponseEntity getUserInfo(@PathVariable("idx") String idx) { + UserInfoResDto userInfoResDto = userService.findUserByIdx(idx); + return ResponseEntity.ok().body(userInfoResDto); + } + + @PutMapping("/{idx}") + public ResponseEntity changeUserName(@PathVariable("idx") String idx, final String name) { + userService.changeUserName(idx, name); + return ResponseEntity.ok().build(); + } + + @DeleteMapping("/{idx}") + public ResponseEntity deleteUser(@PathVariable("idx") String idx) { + userService.deleteUser(idx); + return ResponseEntity.ok().build(); + + } +} diff --git a/src/main/java/org/dailystudio/springbootstudy/domain/User.java b/src/main/java/org/dailystudio/springbootstudy/domain/User.java new file mode 100644 index 0000000..a17306a --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/domain/User.java @@ -0,0 +1,15 @@ +package org.dailystudio.springbootstudy.domain; + +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class User { + private Long userIdx; + private String userEmail; + private String userName; + private String userPass; + private String userPhone; + private String userAuth; +} diff --git a/src/main/java/org/dailystudio/springbootstudy/dto/user/UserInfoResDto.java b/src/main/java/org/dailystudio/springbootstudy/dto/user/UserInfoResDto.java new file mode 100644 index 0000000..b3d530a --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/dto/user/UserInfoResDto.java @@ -0,0 +1,9 @@ +package org.dailystudio.springbootstudy.dto.user; + +import lombok.Getter; + +@Getter +public class UserInfoResDto { + private String email; + private String name; +} diff --git a/src/main/java/org/dailystudio/springbootstudy/dto/user/UserSaveReqDto.java b/src/main/java/org/dailystudio/springbootstudy/dto/user/UserSaveReqDto.java new file mode 100644 index 0000000..2a4748c --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/dto/user/UserSaveReqDto.java @@ -0,0 +1,19 @@ +package org.dailystudio.springbootstudy.dto.user; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; + +@Getter +public class UserSaveReqDto { + @ApiModelProperty(example = "example@gmail.com", position = 1) + private String email; + + @ApiModelProperty(example = "박찬인", position = 2) + private String name; + + @ApiModelProperty(example = "q1w2e3r4!", position = 3) + private String pass; + + @ApiModelProperty(example = "010-1234-1234", position = 4) + private String phone; +} diff --git a/src/main/java/org/dailystudio/springbootstudy/service/UserService.java b/src/main/java/org/dailystudio/springbootstudy/service/UserService.java new file mode 100644 index 0000000..fe2bf05 --- /dev/null +++ b/src/main/java/org/dailystudio/springbootstudy/service/UserService.java @@ -0,0 +1,54 @@ +package org.dailystudio.springbootstudy.service; + +import org.dailystudio.springbootstudy.domain.User; +import org.dailystudio.springbootstudy.dto.user.UserInfoResDto; +import org.dailystudio.springbootstudy.dto.user.UserSaveReqDto; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Service +public class UserService { + + + public void save(UserSaveReqDto userSaveReqDto) { + //유저 등록 작업 -> DB에 INSERT 해야 겠지? + } + + + public List getAll() { + //모든 유저 찾는 작업 -> DB에서 SELECT 해야겠지? + List users = Arrays.asList(); + //반환 시킬 객체 준비 + List userInfoResDtos = new ArrayList<>(); + //domain -> dto 변환 + + //가공된 dto 반환 + return userInfoResDtos; + } + + public UserInfoResDto findUserByIdx(String idx) { + //DB에 userIdx는 보통 정수로 저장되어있으니까 String으로 받은 idx를 Long(int보다 큰 정수형)으로 변환하자. + Long userIdx = Long.valueOf(idx); + //반환시킬 객체 준비 + UserInfoResDto userInfoResDto = null; + //디비에서 userIdx를 이용하여 User객체를 찾아온다. + + //domain -> dto 변환 + + //가공된 dto 반환 + return userInfoResDto; + } + + public void changeUserName(String idx, String name) { + Long userIdx = Long.valueOf(idx); + //유저 정보를 수정하는 과정 + } + + public void deleteUser(String idx) { + Long userIdx = Long.valueOf(idx); + //유저 정보를 제거하는 과정 + } +} diff --git a/src/test/java/org/dailystudio/springbootstudy/SpringbootstudyApplicationTests.java b/src/test/java/org/dailystudio/springbootstudy/SpringbootstudyApplicationTests.java index 1cbed09..71a1031 100644 --- a/src/test/java/org/dailystudio/springbootstudy/SpringbootstudyApplicationTests.java +++ b/src/test/java/org/dailystudio/springbootstudy/SpringbootstudyApplicationTests.java @@ -9,8 +9,8 @@ @SpringBootTest public class SpringbootstudyApplicationTests { - @Test - public void contextLoads() { - } + @Test + public void contextLoads() { + } }