REST API

조예빈·2024년 5월 20일
0

Spring

목록 보기
14/19

REST(Representational State Transfer)

  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
  1. HTTP URI를 통해 자원(resource)을 명시하고
  2. HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 통해
  3. 해당 자원(URI : 통합자원식별자)에 대한 CRUD Operation을 적용하는 것

REST API(RESTful API / RESTful 웹 API)

  • REST(Representational State Transfer) 아키텍처 스타일의 설계 원칙을 준수하는 API(Application Programing Interface)
  • 애플리케이션을 통합하고 마이크로 서비스 아키텍처의 구성 요소를 연결하는 유연하고 가벼운 방법을 제공
  • Client와 Server가 통신하는 방식 중 하나이며, HTTP UR를 통해 통신함
  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미함
  • 대부분 json 형식으로 주고받음
  • OpenAPI를 제공하는 업체도 REST API를 제공
  • 다만, API는 메뉴얼도 함께 제공되어야 함
  1. 자원을 이름으로 구분
    : 자원(문서, 사진, 그림 데이터 등 SW가 관리하는 모든 것)을 HTTP URI(Uniform Resource Identifier)를 통해 명시

    출처

  2. 해당 자원의 상태를 주고받음(요청 -> 응답)
    : 클라이언트가 상태(정보)에 대한 조작을 요청하면 서버는 이에 적절한 응답(Representation)을 보냄

목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
  • 근본적인 목적은 성능 향상이 아님
  • 일관적인 컨벤션을 통한 API의 이해도 및 호환성 향상이 목적임 -> 성능이 중요한 상황에서는 사용하지 않아도 됨
  • 표준이 존재하지 않고 사용할 수 있는 메소드가 제한적임에도 불구하고 편리함을 위해 사용함

구성 요소

  1. 자원(Resource) : HTTP URI
  • 모든 자원에 고유한 ID가 존재. 이 자원은 server에 존재
  • HTTP URI를 통해 자원을 구별하고 지정함
  • 이후 해당 자원의 상태(정보)에 대한 조작을 server에 요청
  1. 행위(Verb) : HTTP Method
  • HTTP 프로토콜의 method를 사용
  • HTTP 프로토콜은 GET, POST, PUT, DELETE 등과 같은 메소드 제공
    3.표현(Representation of Resource)
  • client가 자원의 상태에 대한 조작을 요청하면 server는 적절한 응답 제공
  • REST에서 하나의 자원은 JSON, XML, TEXT 등의 여러 형태를 응답 받을 수 있음
  • 대부분 JSON으로 데이터를 주고받음

RESTful 하지 못하는 경우

  • URI 규칙을 올바르게 지키지 않은 API
  • CRUD 기능을 모두 POST 요청으로만 처리하는 API
  • route에 resource, id 이외의 정보가 들어가는 경우
  • URI에 행위에 대한 부분이 들어가는 경우

@RestController

  • API로 사용되어질 컨트롤러
@RestController
public class ApiController {
	@GetMapping("/api/index")
	public String index() {
		return "api";
	}
}

localhost~/api/index로 접속하면 api가 그대로 출력됨

jackson 라이브러리를 추가하면 객체를 알아서 json 형식으로 바꿔서 return해줌
아래 코드 pom.xml에 추가

<!-- jackson -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.17.1</version>
		</dependency>

테스트

포스트맨으로 해도 되고, chrome 웹 스토어에서 Talend API Tester를 추가해 사용할 수도 있다.

https://chromewebstore.google.com/detail/talend-api-tester-free-ed/aejoelaoggembcahagimdiliamlcdmfm

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글