User Resource에서 POST 메서드 구현하기

Soo·2024년 3월 23일

UserResource에 POST 관련 URL을 작성합니다.

UserResource

  • createUser() 추가
package study.rest.webservices.restfulwebservices.user;

import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class UserResource {

    private UserDaoService service;

    public UserResource(UserDaoService service) {
        this.service = service;
    }

    //GET /users
    @GetMapping("/users")
    public List<User> retrieveAllUsers() {
        return service.findAll();
    }

    //GET /users/{id}
    @GetMapping("/users/{id}")
    public User retrieveUser(@PathVariable int id) {
        return service.findOne(id);
    }

    //POST /users
    @PostMapping("/users")
    public void createUser(@RequestBody User user) {
        service.save(user);
    }
}

UserDaoService

현재는 데이터베이스를 사용하지 않아 id값을 usersCount를 사용해서 카운트합니다.

  • save() 추가
package study.rest.webservices.restfulwebservices.user;

import org.springframework.stereotype.Component;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

@Component
public class UserDaoService {

    private static List<User> users = new ArrayList<>();

    private static Integer usersCount = 0;

    static {
        users.add(new User(++usersCount, "김철수", LocalDate.now().minusYears(30)));
        users.add(new User(++usersCount, "문상훈", LocalDate.now().minusYears(25)));
        users.add(new User(++usersCount, "선우소희", LocalDate.now().minusYears(20)));
    }

    public List<User> findAll() {
        return users;
    }

    public User save(User user) {
        user.setId(++usersCount);
        users.add(user);
        return user;
    }

    public User findOne(int id) {
        Predicate<? super User> predicate = user -> user.getId().equals(id);
        return users.stream().filter(predicate).findFirst().get();
    }
}

Postman을 사용해서 데이터를 추가하겠습니다.

요청이 save()를 타고 제대로 작동하였습니다.

0개의 댓글