USER
GET | /users | 유저 조회 |
GET | /users/{id} | 특정 유저 조회 |
POST | /users | 유저 등록 |
객체 생성
- USER 객체를 생성
- @Data : getter,setter 자동 처리
- @AllargsContructor : 생성자 자동 생성
package com.example.restfulwebservice.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@Data //getter,setter 사용
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Date joinDate;
}
SERVICE 구현
- 실제 기능 비즈니스 로직 구현
- 스프링은 빈 객체로 관리 되기 때문에 스프링 컨테이너,Ioc에 빈 등록 해준다..
- @Service 어노테이션을 사용해 빈으로 등록
findAll() | 전체 User 조회 |
findOne() | User 검색 |
save() | User 추가 |
package com.example.restfulwebservice.User;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//도메인 정보를 사용해서 비즈니스 로직 추가
@Service //빈 등록
public class UserDaoService {
private static List<User> users = new ArrayList<>();
private static int usersCount = 3;
static{ //static 변수로 값이기 때문에 static 블록에서 값 추가
users.add(new User(1,"kwon",new Date()));
users.add(new User(2,"kwon",new Date()));
users.add(new User(3,"kwon",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;
}
//리스트 검색
public User findOne(int id){
for(User user : users){
if(user.getId() == id) {
return user;
}
}
return null;
}
}
RestController 구현
- Get,POST JSON 타입으로 맵핑하기 위해 RestController 선언
- 스프링 컨테이너에 등록된 Service를 사용하기 위해 의존 주입을 받아야함
- @Autowired로 userDaoService 자동 의존 주입
- object 타입(json,xml 등)의 매개 변수를 받기 위해서는 @RequestBody 선언해야함.
@RequestBody HTTP 요청을 자바 객체로 전달 받음
@ResponseBody 자바 객체를 HTTP 응답으로 전송
package com.example.restfulwebservice.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class UserController {
//스프링 컨테이너, IOC에 등록 된 빈객체를 userDaoSerive를 자동 의존 주입
@Autowired
private UserDaoService service;
@GetMapping("/users")
public List<User> retreiveAllUsers() {
return service.findAll(); //전체 리스트 받아옴
}
@GetMapping("/users/{id}")
public User retreiveAllUsers(@PathVariable int id) {
return service.findOne(id);
}
@PostMapping("/users")
public void createUser(@RequestBody User user){ //object 타입의 매개 변수를 받기 위해서 매개변수 타입의 RequestBody선언해야
User savedUser = service.save(user);
}
}
User 추가 결과)
- Postnum에서 user POST타입으로 호출 후 json 타입 Body 전송하면, 정상적으로 User에 추가된다.
Reference
인프런 강의 - Spring Boot를 이용한 RESTful Web Services 개발
300x250
'공부 > Spring Boot를 이용한 RESTful Web Services 정리' 카테고리의 다른 글
[Spring Boot] DELETE HTTP Method 구현 (0) | 2021.08.19 |
---|---|
[Spring Boot] HTTP Status Code 제어, Exception Handling (0) | 2021.08.06 |
[Spring Boot] DispatcherServlet 작동 원리, @PathVariable 사용법 (0) | 2021.08.03 |
[Spring boot] @RestController ,@GetMapping 예제 (0) | 2021.08.03 |
[Spring boot] IntelliJ - Spring boot 시작하기 (0) | 2021.08.03 |