일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- 우분투
- 자바
- 서버 배포
- MVC
- Servlet
- git 충돌 해결
- 저장소 이전
- MySQL
- 값 타입
- jar빌드
- Json 객체
- 두수의 합 자바
- springboot
- HttpServletResponse
- 페이징 정렬
- 스프링부트 OpenAI API
- JPQL
- 저장소 복제
- swap 메모리
- JDBC
- 파이썬
- 스프링 이메일 전송
- 프로그래머스
- api 개발
- github 복제
- Chat GPT
- 넘파이
- 비밀번호 재설정 API
- Git
- Today
- Total
현의 개발 블로그
DB없이 유저 API 개발하기 본문
유저 생성 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
참고
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인
Java와 Spring Boot, JPA, MySQL, AWS를 이용해 서버를 개발하고 배포합니다. 웹 애플리케이션을 개발하며 서버 개발에 필요한 배경지식과 이론, 다양한 기술들을 모두 학습할 뿐 아니라, 다양한 옵션들
www.inflearn.com
'스프링부트 실습 > 도서관리 웹 개발' 카테고리의 다른 글
JDBC를 활용해 API 개발하기3 - 역할 분리 (0) | 2023.04.15 |
---|---|
JDBC 활용해 API 개발하기2 - CRUD 개발 (0) | 2023.04.15 |
JDBC 활용해 API 개발하기 - SQL 문법 및 MYSQL 연결하기 (0) | 2023.04.15 |
API 개발 연습하기 (0) | 2023.04.14 |
프로젝트 생성하기 (0) | 2023.04.14 |