java, spring

[Spring Boot] REST API, CRUD 설계

isaac.kim 2022. 3. 5. 16:25
728x90
반응형

[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 설계에 대해 알아보았습니다.

도움이 되셨다면 좋아요 꾹! 광고 꾹! 해주시면 제게 큰 힘이 됩니다.

좋은 하루 보내세요.^^

728x90
반응형