[Spring Boot] REST API, CRUD 설계
이전 글
2022.03.04 - [Java & Framework/Spring Boot] - [Spring Boot] Spring MVC로 RESTful API 서비스 구현
2022.03.04 - [Computer Science] - REST, RESTful
2022.03.03 - [Java & Framework/Spring Boot] - [Spring Boot] 스프링 특징 & 스프링 부트 간단한 소개
이전 글들을 다 읽었거나 RESTful API에 대해서 공부를 했다면 다음은 구현을 해야 한다.
# HTTP 메서드
Operation | HTTP method |
Create | POST |
Read | GET |
Update | PUT |
Delete | DELETE |
# CRUD 설계
url 설계, 명칭은 복수형 명사로 한다.
UserController 생성 : /users
■ GET
public Map<String, Object> getAllUsers();
public Map<String, Object> getUser(@PathVariable("userid") Integer userid);
■ POST
public Map<String, Object> createUser();
■ PUT
public Map<String, Object> updateUser();
■ DELETE
public Map<String, Object> deleteUser();
# Data Transfer Object 디자인 패턴
데이터를 각 서버/클라이언트 간 전달하기 위한 목적으로 만든 객체(VO, DTO)
- java.io.Serializable 인터페이스 구현 - 객체 직렬화 지원
- Immutable 객체로 만듦 - setter 포함하지 않음
- 도메인(모델) 객체를 래핑(wrapping)
public class User {
private Integer userid;
private String username;
public User(Integer userid, String username) {
this.userid = userid;
this.username = username;
}
// getter and setter methods
}
# JSON
JSON 형태와 Java Object 형태가 동일하여 JAVA APPLICATION에서 JAVA OBJECT로 처리하고 응답하는 것이 JSON으로 변환된다. Java에서 Map이 JSON 형태와 동일해서 Map으로 반환하면 JSON으로 잘 변환되어 처리된다.
JSON(JavaScript Object Notation)이란?
- http://www.json.org
- JSON은 경량(lightweight)의 DATA-교환 형식
- Javascript에서 객체를 만들 때 사용하는 표현식을 의미함
- JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 적어서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용함
- 특정 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링할 수 있는 라이브러리를 제공하고 있음
JSON(JavaScript Object Notation) 형식
1. name-value 형식의 쌍(pair) : 여러 가지 언어들에서 object, hashtable, struct로 실현되었다.
{
"firstName" : "Brett",
"lastName" : "McLaughlin",
"email" : "brett@newInstance.com"
}
2. 값들의 순서화된 리스트 형식 : 여러 가지 언어들에서 array, list로 실현되었다.
{
"firstName" : "Brett",
"lastName" : "McLaughlin",
"email" : "brett@newInstance.com",
"hobby" : ["puzzles", "swimming"]
}
JSON 라이브러리 - Jackson
- https://jackson.codehaus.org
- High-Performance JSON Processor!
- Jackson은 JSON 형태를 Java 객체로, Java 객체를 JSON 형태로 변환해주는 Java 용 JSON 라이브러리임
- 가장 많이 사용하는 JSON 라이브러리임
# API 응답 포맷
요청에 대한 응답의 결과를 상태와 데이터로 구분하여 표현할 수 있다.
{
"status" : "OK",
"data" : { ... }
}
에러 메시지
{
"status" : "ERROR",
"data" : null,
"error":{
"errorCode" : 999,
"description" : "Email address is invalid"
}
}
페이징 처리
{
"status" : "OK",
"data" : [ ... ],
"error" : null,
"pageNumber" : 1,
"nextPage" : "http://localhost:8080/users?page=2",
"total" : 13
}
Jackson 라이브러리를 통해 객체 변환이 이루어진다.
JSON ↔ 자바 객체
이번 글은 RESTful API의 CRUD 설계에 대해 알아보았습니다.
도움이 되셨다면 좋아요 꾹! 광고 꾹! 해주시면 제게 큰 힘이 됩니다.
좋은 하루 보내세요.^^
'java, spring' 카테고리의 다른 글
[SpringBoot] API Security and JWT (0) | 2022.03.15 |
---|---|
[SpringBoot] MariaDB 연결하기 (0) | 2022.03.10 |
[Spring Boot] Spring MVC로 RESTful API 서비스 구현 (0) | 2022.03.04 |
[Spring Boot] 스프링 특징 & 스프링 부트 간단한 소개 (0) | 2022.03.03 |
[Spring Boot] 프로젝트 및 Controller 생성 (0) | 2022.02.25 |