본문 바로가기

공부/Spring Boot를 이용한 RESTful Web Services 정리

[Spring Boot] API 구현- Domain , GET , POST 예제

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