[개념] REST API의 특징 및 API URL 작성법

2024. 6. 15. 00:47·CS 공부
728x90

REST API 란?

REST(Representational State Transfer) API는 웹과 같은 분산 하이퍼미디어 시스템을 위해서 만들어진 아키텍처 스타일이다. 

REST API는 웹에서 데이터를 전송하는 방법을 정의하는 데 중점을 두고 있으며, 웹 기술과 HTTP 프로토콜을 사용한다.

 

 

REST API 특징

 

1. 균일한 인터페이스

REST API 아키텍쳐를 단순화하고 가시성을 높이기 위해서는 인터페이스에 일반성 원칙을 적용시켜야한다.

REST 인터페이스를 만들기 위해 4가지 추가 제약조건이 있다.

  • 리소스 식별 - 인터페이스는 클라이언트와 서버 간의 상호 작용에 관련된 각 리소스를 고유하게 식별해야 한다
    +) 리소스를 식별하는 수단으로는 Url를 많이 사용한다.
  • 표현을 통한 리소스 조작 – 클라이언트는 통일된 표현방법으로 리소스를 조작한다.
    +) GET, POST, DELETE, PUT, PATCH

  • 메세지 설명 – 각 리소스 정보에는 메시지 처리 방법을 설명할 수 있는 정보가 포함되야한다. 
    +) 해당 url를 통해 무엇을 더 할 수 있는지 설명을 적어준다.
    {
      "id": 1,
      "name": "SanghyunDal",
      "links": {
        "self": "/users/123", //현재 url
        "put": "/users/123", // 업데이트 url
        "delete": "/users/123" //삭제 url
      }
    }
  • 애플리케이션 상태의 엔진으로서의 하이퍼미디어 – 클라이언트는 애플리케이션의 초기 URI만 가지고 있어야 합니다. 
    +) 초기 url를 통해 다음 작업에 대한 url을 동적으로 알아가야한다.

 

2. 클라이언트-서버 구조

클라이언트는 서버로부터 데이터를 받아서 사용자에게 보여주는 역할을 하고, 서버는 클라이언트의 요청에 따라 데이터를 보내준다.

 

+) 클라이언트와 서버는 독립적으로 의존성 낮게 개발되어야한다.

 

3. 무상태성

클라이언트는 서버에게 데이터를 요청할 때, 이전에 했던 요청과는 별개의 요청으로 판단된다.

그래서 매 요청마다 요청과 관련된 모든 정보를 서버에 보내어 그에 해당하는 답변을 받는다.

 

+) 서버는 클라이언트가 전에 보냈던 요청에 대해 기억하지 않기 때문에, 매 요청을 보낼때마다 요청이 필요한 조건을 모두 url에 담아서 보내야한다.

 

4. 캐시 가능

REST API는 HTTP 프로토콜을 기반으로 하기 때문에 HTTP의 캐싱 기능을 사용할 수 있다.

캐싱 기능을 사용하면 클라이언트 측에서 데이터를 저장하여 서버의 부하를 줄이고, 응답시간을 단축시킬 수 있게 된다.

 

+) http 요청의 헤더부분에 'Cache-Control'과 관련하여 값을 주어 캐시 기능을 사용한다.

 

5. 계층화된 시스템

클라이언트와 서버 사이에 다양한 시스템을 두어 추가적인 기능을 확장할 수 있다.

예로는 프록시서버, 캐싱서버, 데이터베이스서버 등이 있을 수 있다.

+) 추가적인 기능 : 보안 강화, 성능 향상, 유지보수 등등

 

 

주요 HTTP 메소드와 목적

 

  • GET: 서버에서 리소스를 조회한다. 데이터를 변경하지 않고, 조회만 한다.
  • POST: 서버에 리소스를 생성한다.
  • PUT: 서버의 리소스를 업데이트하고, 리소스가 존재하지 않으면 새로 생성할 수도 있습니다.
  • DELETE: 서버의 리소스를 삭제한다.
  • PATCH: 리소스의 일부를 업데이트한다.

 

 

API url 작성시 유의할 점

 

1. 일관성 유지

url 구조와 네이밍 규칙을 일관되게 유지하여 API 동작을 예측할 수 있어야한다.

 

2. url은 직관적인 명사와 복수형을 사용한다.

- url은 동사보다는 명사로 구성해야한다. ex) /getUsers (x) -> /users (o)

- 리소스 이름은 명확하고 직관적으로 지어야하고 명사의 경우 복수형으로 사용한다. ex) /users , /products ...

 

3. RESTful한 원칙을 준수

각 HTTP 메소드 목적에 맞게 사용해야한다.

 

4. url의 쿼리 파라미터

url의 쿼리 파라미터를 사용하여 리소스를 필터링, 정렬, 페이징한다.

 

5. 하이픈(-)

url에서는 밑줄(_)을 사용하지 않고 하이픈(-)을 사용하여 구성한다.

 

6. HTTP 상태 코드

 

  • 200 OK: 요청 성공
  • 201 Created: 리소스 생성 성공
  • 204 No Content: 요청 성공, 응답 본문 없음
  • 400 Bad Request: 잘못된 요청
  • 401 Unauthorized: 인증 실패
  • 404 Not Found: 리소스 없음
  • 500 Internal Server Error: 서버 오류

위의 상태코드를 잘 사용하여 클라이언트에게 요청에 대한 결과를 알려줘야한다.

 

 

7. 리소스간의 관계 표현

url에는 리소스 간의 계층적인 관계에 대한 정보도 포함되야한다.

 

ex) /users/111/products -> 111번의 아이디를 가진 유저 아래에 있는 물품이라는 것을 유추할 수 있다.

 

 

더보기

참고

https://restfulapi.net/

 

What is REST?: REST API Tutorial

REST is an acronym for REpresentational State Transfer. It is an architectural style for hypermedia systems and was first presented by Roy Fielding.

restfulapi.net

https://kmkunk.tistory.com/139

 

REST API 설계 원칙

1. REST(Representational State Transfer) - URI를 통해 자원을 표시하고, HTTP Method를 이용하여 해당 자원의 행위를 규정하여 그 결과를 받는 것을 의미한다. - 구성 종류 설명 자원(Resource) URI 행위(Verb) HTTP Met

kmkunk.tistory.com

https://prohannah.tistory.com/156

 

RESTful API를 위한 6가지 원칙과 네이밍

REST와 RESTful REST는 REpresentational State Transfer 의 약어로, 클라이언트과 서버가 데이터를 주고 받는 방식에 대한 아키텍처 스타일이다. REST에는 여섯 가지의 기본 원칙이 있고, 이 가이드를 준수한

prohannah.tistory.com

 

728x90

'CS 공부' 카테고리의 다른 글

[개념] CI/CD 란?  (0) 2024.03.17
[개념] 번들링(Bundling)이란?  (1) 2024.03.14
[개념] 절차지향과 객체지향의 차이는?  (0) 2024.03.13
[개념] SPA, MPA, SSR, CSR, SSG 개념 알기  (0) 2024.03.12
[개념] Ajax(Asynchronous Javascript And XML)란?  (0) 2024.03.09
'CS 공부' 카테고리의 다른 글
  • [개념] CI/CD 란?
  • [개념] 번들링(Bundling)이란?
  • [개념] 절차지향과 객체지향의 차이는?
  • [개념] SPA, MPA, SSR, CSR, SSG 개념 알기
Sanghyundal
Sanghyundal
  • Sanghyundal
    초보 개발자
    Sanghyundal
  • 전체
    오늘
    어제
    • Coding
      • Flutter
      • FE
      • CS 공부
      • Git
      • 활동 관련
      • SKALA
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    skala
    skala 부트캠프
    oscca
    Get.put()
    crew ai
    skala 1기
    turbopack
    Get.lazyPut()
    ai agent
    skala1기
    멋쟁이 사자처럼 해커톤
    pr agent
    클라우드
    JS 이벤트 위임
    우테코 프론트엔드
    initialBinding
    SK
    자바스크립트 이벤트 위임
    css normalize
    ossca
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sanghyundal
[개념] REST API의 특징 및 API URL 작성법
상단으로

티스토리툴바