[웹개발 로드맵] 7. REST

남현우·2022년 6월 29일
0

웹개발 로드맵

목록 보기
7/10

API

REST를 알아보려면 먼저 API에 대해 간략히 알아봐야한다.
API란 Application Programming Interface의 약자로, 컴퓨터 또는 프로그램 사이의 연결을 의미한다.
이는 소프트웨어 인터페이스로써 개발자가 사용할 수 있는 도구나 서비스의 역할을 하게 되는데,
특정 작업을 수행할 함수들의 집합이라고 이해하면 조금 쉽다.

CRUD

다음 나올 이야기를 위해 잠깐 CRUD가 무엇인지 알고가자.
CRUD는 Create, Read, Update, Delete의 약자로 기본적인 소프트웨어의 데이터 처리기능을 의미한다.
데이터를 추가하고, 읽고, 최신화하고, 삭제하는 기능들을 CRUD라고 함축해 부를 수 있다.

REST

REST는 Representational State Transfer의 약자로,
네트워크 리소스를 정의하고 처리하는 방법을 설명하는 일련의 원칙을 기반으로 하는 아키텍쳐 스타일이다.
REST는 HTTP를 보다 잘 활용하기 위해서 사용되는 원칙으로 이를 잘 준수한 시스템을 Restful하다고 부른다.

REST의 조건

인터페이스 일관성
URI로 지정한 리소스에 대한 조작을 일관된 인터페이스로 수행해야한다.
무상태(Stateless)
클라이언트의 context를 서버에 저장하지 않는다.
캐시 처리 가능
클라이언트는 응답을 캐싱할 수 있어야 한다.
계층화
클라이언트와 서버 사이에 중간 서버를 두어 계층구조를 만들어도 된다.
Code on Demand
클라이언트에서 실행되는 로직을 서버가 전송해 기능 확장이 가능하다.
클라이언트 - 서버 구조
클라이언트 - 서버의 구조로 각 파트가 독립적으로 개선되어 의존성을 줄인다.

REST 설계규칙

소문자 사용
하이픈(-) 사용. 공백 제거
확장자 사용 지양.
URI마지막에 슬래시(/)제거
계층관계는 슬래시(/)사용
전달하고자 하는 리소스의 명사 사용.(컨트롤 리소스는 예외)
URI의 영어는 복수형으로 작성.(계층화 가능)

REST 예시

RESTful CRUD API의 예를 한 가지 들어보겠다.
기존 API의 경우라면 URI가 다음과 같이 생성됐을 것이다.
www.example.com/createSomthing
www.example.com/seeSomething
www.example.com/getSomething/NameOfSomething
이러한 형태는 명확한 패턴이 없기에 사용자나 개발자에게 이해가 어려워, 좋지 않은 설계라고 볼 수 있다.

다음은 REST API의 예를 들어보겠다.
www.example.com/Something 이라는 하나의 URI를 생성한 뒤,
만약 무언가를 추가해야한다면 POST 방식을 사용하고, GET을 사용한다면 무언가의 리스트를 가져오며,
www.example.com/Something/NameOfSomething 로 GET을 한다면 무언가에 대한 정보만 가져올 수 있다.
삭제나 외의 기능들을 원한다면 PUT, DELETE를 활용할 수 있다.

REST 가이드

위처럼 REST를 통해서 보다 직관적인 URI를 사용할 수 있다.
REST의 이름을 직역하면 표현적인(추상적인) 상태 전달이다.
예시를 떠올리며 다시 해석하자면 리소스에 맞추어 표현해내는 URI활용 스타일이라고 볼 수 있다.
위의 예시를 보았다고 하지만 실제로 어떻게 RESTful한 설계를 할 수 있을까.

아래의 네 가지 가이드를 확인해보자.

리소스 식별
서버는 자료를 html, json과 같은 형식으로 전송해 개별 리소스를 식별 가능하게 해야한다.
메시지를 통한 리소스 조작
특정 메시지만 보유한다면 서버의 해당 리소스를 수정, 삭제 가능할 수 있게 작성한다.
자기서술적 메시지
각 메시지는 어떻게 처리될지에 대한 정보를 충분히 포함해야한다.
애플리케이션의 상태에 대한 엔진으로서 하이퍼미디어
클라이언트가 관련된 리소스에 접근하기를 원한다면, 지시자(URI)에서 구별될 수 있어야 한다.

profile
개발 관련 지식을 기록하는 블로그입니다.

0개의 댓글