Response 데이터, JSON, HTTP Method, RequestBody, REST API

Stella·2024년 1월 26일
post-thumbnail

Response 데이터

Controller, RestController

  • RestController 응답 객체
    복잡한 형태의 객체를 반환하기 위해 사용

반환 되는 객체와 비슷하게 응답 JSON데이터로 반환이 된다.

  • JSON응답 데이터
    웹 개발 시 가장 일반적으로 사용하는 응답 데이터 포맷
    JSON형식의 데이터를 응답 받아 화면을 구성한다.
    각 REST API별로 어떤 JSON데이터를 응답할 것인지 사전에 정한다.
  • 프론트엔드와 백엔드 모두 정해진 JSON 데이터에 맞게 구현한다.

JSON포맷

JavaScript Object Notation
데이터를 교환하는 데 사용한다. XML보다 가볍다. 읽고 이해하기가 쉽다.

"key":value 다양한 형태의 데이터 타입이 가능하다.
문자열, 숫자, Bollean, null, JSON객체, JSON 배열,
중첩 작성도 가능하다. JSON array도 가능하다.

public class UserDto {
    Integer id;
    String name;
    String email;
    List<String> specialties; //문자열이 저장된다.

    // code

    public UserDto(Integer id, String name, String email, List<String> specialties) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.specialties = specialties;
    }// 전체를 초기화 하는 생성자가 자동 생성된다 genrator

HTTP Method

Hyper Text를 컴퓨터가 주고 받기 위한 규약, 컴퓨터 간의 데이터를 주고 받기 위해 약속이 필요하다.
IETF, W3C 등 국제 표준 단체에서 HTTP에 대한 표준을 정하여 배포한다.

  • HTTP 수행 행동의 종류를 명시
    자원의 생성, 조회, 수정, 삭제, 일부 수정

  • HTTP Method를 사용하면 단일 URI로 다양한 행동을 정의 가능하다.
    GET(자원의 조회)
    POST(자원의 생성)
    PUT(자원의 수정)
    DELETE(자원의 삭제)

  • DB의 4가지 기본 동작
    CRUD
    CREATE(데이터 저장) - POST , READ(데이터 조회) - GET , UPDATE(데이터 수정) - PUT/ PATCH, DELETE(데이터 삭제) - DELETE

단일 URI로 다양한 행동을 정의 가능하다.

  • HTTP Method는 규칙이 아니라 규약이다.
    GET Method로 자원을 삭제해도 에러가 발생하지 않는다.

POST / post 로 호출을 하면 된다.
DELETE /post 등으로 동일한 url일 경우 선택적으로 호출이 된다.

  • 간소화 된 Annotation도 가능
    @RequestMapping(method = GET)
    public String getPost() {
    return "GET /post";
    }

아래의 코드처럼 간소화가 가능하다.
@GetMapping -> @PostMapping도 가능
public String getPost() {
return "GET /post";
}

Request Body

  • 대용량 데이터를 보내기 위해
    ex. 게시판 글, 작성된 Form 데이터 등
    데이터를 저장 및 수정하는 post, put method에서 사용 된다.

다양한 포맷의 데이터 전송이 가능하다. JSON데이터 형식이 주로 사용된다.

  • postman에서 raw -> JSON 선택한다.

  • @RequestBody 형식의 데이터

public class PostDto {
	Integer id;
    String title;
    String content;
    String username;
}

@PostMapping
public String savePost (@RequestBody postDto postDto) {
	System.out.println(postDto.getId());
    System.out.println(postDto.getTitle());
    System.out.println(postPto.getUsername());
    
    return "POST /post";
}

PostMapping(method = PUT)

postmapping이나 getmappint 둘 중에 하나 사용 가능하다.

GetMapping, PostMapping, PutMapping, DeleteMapping 등

http가 반영된 annotation을 사용하기 간소화된 mapping을 사용가능하다.

API

정보를 주고 받기 위한 방법/약속
사용 방법을 알아야 한다. API문서는 API를 사용하는 방법을 명세한 문서이다.

  • REST API 문서화
    프론트엔드에서 호출 하기 위한 REST API의 정보가 명세 된 문서이다.

호출하는데 전혀 어려움이 없도록 상세하게 작성해야 한다.

  • REST API 정보
  1. REST API 설명
  2. URI
  3. HTTP Method
  4. Request 파라미터 (필수 파라미터와 선택 파라미터)
  5. Response 데이터 (필수 응답 데이터와 선택 응답 데이터)
    가능한 에러 코드 및 대응 방법

샘플 요청을 하고 샘플 응답을 한다.
잘 작성될 수록 communication 비용이 줄어 든다.

profile
공부 기록

0개의 댓글