Category: Spring Rest

0

Spring Rest API - Spring Boot Swagger 사용하기

목차 Spring Rest API - Spring Boot Swagger 사용하기 Spring Rest API - ExceptionHandling Spring Rest API - HTTP Status Code 다루기 Spring Rest API - 도메인 및 서비스 로직 작성하기 Spring Rest API - Rest API 시작하기 Controller 작성 Spring Boot Rest API - Spring Boot Swagger 사용하기 Swagger 란 Open API Specification(OAS) 를 위한 프레임워크다. 개발자가 REST API 서비스를 설계, 빌드, 문서화 할 수 있도록 도와준다. Swagger를 사용하기 위한 의존성 추가하기implementation "io.springfox:springfox-boot-starter:3.0.0" Swagger를 사용하기 위한 설정 추가 Docket Swagger 설정의 핵심이 되는 Bean apis ApiSelectorBuilder 를 생성 명시된 Package나 어노테이션를 대상으로 Swagger API 문서를 만든다. RequestHandlerSelectors 클래스 메소드를 통해 설정한다. any : 전부 basePackage : 명시된 패키지를 대상으로 Swagger API 문서를 만든다. withClassAnnotation : 명시된 어노테이션이 붙은 Class만 Swagger API 문서를 만든다. withMethodAnnotation : 명시된 어노테이션이 붙은 Method만 Swagger API 문서를 만든다. paths apis 에서 명시된 대상에서 paths 조건에 맞는 것만 Swagger API 문서를 만들 수 있도록 필터링 한다. Open API 3.0 사용한 방법

0

Spring Rest API - ExceptionHandling

목차 Spring Rest API - Spring Boot Swagger 사용하기 Spring Rest API - ExceptionHandling Spring Rest API - HTTP Status Code 다루기 Spring Rest API - 도메인 및 서비스 로직 작성하기 Spring Rest API - Rest API 시작하기 Controller 작성 Spring Boot Rest API - ExceptionHandling존재하지 않는 id값에 대한 예외처리 추가저장되지 않은 User를 조회할 경우 UserNotFoundException 예외가 발생하도록 예외처리한다. UserController.java @GetMapping("/users/{id}")public User retrieveUser(@PathVariable int id){ User user = service.findOne(id); if(user == null){ throw new UserNotFoundException(String.format("ID[%s] not found", id )); } return user;} 예외처리하는 Exception 클래스 생성ResponseStatus 를 이용해 HttpStatus.NOT_FOUND 옵션을 설정할 경우 UserNotFoundException 예외가 발생했을때 Http Status Code 404(Not Found) 가 반환된다.

0

Spring Rest API - HTTP Status Code 다루기

목차 Spring Rest API - Spring Boot Swagger 사용하기 Spring Rest API - ExceptionHandling Spring Rest API - HTTP Status Code 다루기 Spring Rest API - 도메인 및 서비스 로직 작성하기 Spring Rest API - Rest API 시작하기 Controller 작성 Spring Boot Rest API - HTTP Status Code 다루기201(Created) 코드 반환하기 사용자가 요청으로 새로운 User가 생성됨을 확인하기 위해 201(Created) 코드를 반환한다. @PostMapping("/users")public ResponseEntity<User> createUser(@RequestBody @Valid User user){ User savedUser = service.save(user); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .buildAndExpand(savedUser.getId()) .toUri(); return ResponseEntity.created(location).build();} 201(Created) 코드를 확인하기 위한 Test Code 작성@Testpublic void 유저를_등록하고_상태코드_201을_확인한다() throws Exception { User user = new User(); String name = "dongwoo"; Date date = new Date(); user.setName(name); user.setJoinDate(date); String content = objectMapper.writeValueAsString(user); ResultActions resultActions = mockMvc.perform(post("/users") .content(content) .contentType(MediaType.APPLICATION_JSON)); resultActions .andExpect(status().isCreated()) .andDo(print());}

0

Spring Rest API - 도메인 및 서비스 로직 작성하기

목차 Spring Rest API - Spring Boot Swagger 사용하기 Spring Rest API - ExceptionHandling Spring Rest API - HTTP Status Code 다루기 Spring Rest API - 도메인 및 서비스 로직 작성하기 Spring Rest API - Rest API 시작하기 Controller 작성 Spring Boot Rest API - 도메인 및 서비스 로직 작성하기User 도메인 클래스 생성@Data@AllArgsConstructor@NoArgsConstructorpublic class User { private Integer id; private String name; private Date joinDate;} 서비스 클래스 생성@Servicepublic class UserDaoService { // 관계형 데이터베이스를 사용하지 않고 Memory 데이터를 사용 private static List<User> users = new ArrayList<>(); private static int usersCount = 3; static{ users.add(new User(1, "Kenneth", new Date())); users.add(new User(2, "Alice", new Date())); users.add(new User(3, "Elena", new Date())); } // 전체 사용자 조회 public List<User> findAll(){ return users; } // 개별 사용자 조회 public User save(User user){ if(user.getId() == null){ user.setId(++usersCount); } users.add(user); return user; } // id값을 이용한 사용자 조회 public User findOne(int id){ for (User user : users){ if(user.getId() == id){ return user; } } return null; }} 사용자 요청 처리 Controller 추가@RestController@RequiredArgsConstructorpublic class UserController { private final UserDaoService service; @GetMapping("/users") public List<User> retrieveAllUsers(){ return service.findAll(); } // path variable을 이용한 요청을 처리 @GetMapping("/users/{id}") public User retrieveUser(@PathVariable int id){ User user = service.findOne(id); return user; }}

0

Spring Rest API - Rest API 시작하기 Controller 작성

목차 Spring Rest API - Spring Boot Swagger 사용하기 Spring Rest API - ExceptionHandling Spring Rest API - HTTP Status Code 다루기 Spring Rest API - 도메인 및 서비스 로직 작성하기 Spring Rest API - Rest API 시작하기 Controller 작성 Spring Boot Rest API - Rest API 시작하기 Controller 작성@RestControllerpublic class HelloWorldController { @GetMapping("/hello-world") public String Hello(){ return "Hello World"; } // SpringBoot에서는 HelloWorldBean이라는 객체를 JSON타입의 형태로 반환해준다. @GetMapping("/hello-world-bean/") public HelloWorldBean helloWorldBean(){ return new HelloWorldBean("Hello World"); } @GetMapping("/hello-world-bean/path-variable/{name}") public HelloWorldBean helloWorldBean(@PathVariable String name){ return new HelloWorldBean(String.format("Hello World, %s", name)); }} HelloWorldBean 클래스 생성@Data@NoArgsConstructor@AllArgsConstructorpublic class HelloWorldBean { private String message;} 테스트 코드 작성 MockMvc 객체를 이용해 각 Controller에 대한 Test 코드를 작성한다. MockMvc 객체의 반환 값으로는 ResultActions 를 이용해 받는다. ResultActions 객체내 andExpect 메소드를 이용해 요청이 정상적(200) 으로 수행 됐는지 반환 값이 정상적으로 왔는지 검증한다. @Testpublic void Hello_World가_리턴된다() throws Exception{ ResultActions actions = mockMvc.perform(get("/hello-world")); actions .andExpect(status().isOk()) .andExpect(content().string("Hello World")) .andDo(print()) ;}