현의 개발 블로그

DB없이 유저 API 개발하기 본문

스프링부트 실습/도서관리 웹 개발

DB없이 유저 API 개발하기

hyun2371 2023. 4. 14. 21:15

유저 생성 API 개발

유저의 이름과 나이를 입력하면, 유저가 생성되는 API를 개발할 것이다.

 

API 명세서

HTTP Method POST
HTTP Path /user
HTTP Body {"name" : String(non null),
     "age": Integer}
  반환 결과 반환 x

 

User Entity를 먼저 생성한다.

public class User{
    private String name;
    private Integer age;
    
    public User(String name, Integer age)
    	if (name == null || name.isBlank()){
        	throw new IllegalArgumentException("잘못된 이름이 들어왔습니다.");
        this.name = name;
        this.age = age;
    }
}

 

age는 null이 올 수 있기 때문에 int 대신 Integer 타입으로 설정했다.

 

전달 받은 name과 age를 엔티티 변수에 할당해주기 전 유효성 검사를 한다.

name이 null이거나 isBlank()이면 예외를 던진다.

 

*isBlank(): 문자열이 비었거나, 빈 공백으로만 이뤄져 있으면 true를 반환한다.

                  isEmpty()와 달리, "    "도 false가 아닌 true로 반환한다.

 

 

 

DTO 생성

@Getter
public class UserCreateRequest{
    private String name;
    private Integer age;
}

 

Controller 생성

@RestController
public class UserController {
	private final List<User> users = new ArrayList<>();
    
    @PostMapping("/user")
    public void saveUser(@RequestBody UserRequest request){
    	User newUser = new User(request.getName(), request.getAge());
        users.add(newUser);
    }
}

유저가 입력해준 이름, 나이값을 기반으로 User객체를 생성해 리스트에 추가해준다.

 

 

 

유저 조회 API 개발하기

 

API 명세서

HTTP Method GET
HTTP Path /user
HTTP Body 없음
반환 결과 List<UserResponse>

 

결과 조회 API에서는 HTTP 결과를 JSON으로 반환해야 한다.

Controller에서 객체를 반환하면 자동으로 JSON으로 반환해준다.

이 때 객체에 getter가 필수로 있어야 한다. 

 

 

 

response DTO를 먼저 생성한다

@Getter
public class UserResponse {
    private Long id;
    private String name;
    private Integer age;
    
    public UserResponse(long id, User user){
    	this.id = id;
        this.name = user.getName();
        this.age = user.getAge();
    }

}

 

 

Controller에 getUsers() 함수를 추가해준다.

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

@GetMapping("user")
public List<UserResponse> getUsers(){
    List<UserResponse> responses = new ArrayList<>();
    for (int i=0; i < users.size(); i++){
    	responses.add(new UserResponse(i+1, users.get(i));
    }
    return response
}

users를 순서대로 id값과 함께 반환한다.

 

 

API를 호출해보자 

UserResponse 변수명이 JSON의 key 이름과 동일함을 확인할 수 있다.

이는 @RestController를 클래스에 붙여 주어서 가능한 것이다.

 

 

 

 

DB 없이 API 개발의 한계

서버를 재실행하면 유저 정보가 사라진다. 유저 정보가 메모리에서만 유지되는 것이다.

다음 글에서는 DB를 사용해 서버를 재실행해도 정보가 사라지지 않게 할 예정이다.

 

 

JDBC 활용해 API 개발하기 - SQL 문법 및 MYSQL 연결하기

JDBC(Java DataBase Connectivity)는 자바에서 DB를 사용할 수 있도록 지원하는 API 이다. DB로 커넥션을 연결하고, SQL을 전달하면, DB로부터 응답을 받는 형태이다. JDBC를 활용하기 위해서 SQL 문법을 알아야

hyun-keepdeving.tistory.com

 

 


참고

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%84%9C%EB%B2%84%EA%B0%9C%EB%B0%9C-%EC%98%AC%EC%9D%B8%EC%9B%90/dashboard

 

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인

Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들

www.inflearn.com

https://hianna.tistory.com/531

Comments