ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] RESTful 이해하기
    Software Development/Java 2020. 12. 26. 22:18

    웹, 서버 개발자의 필수 요건이 REST API 개발 경험입니다. REST API가 무엇인지 살펴보겠습니다.

     

    REST란?

    REST란 REpresentational State Transfer의 약자로, HTTP의 창시자 중 한 사람인 로이 필딩이 2000년에 발표한 박사 학위 논문에서 소개했습니다. 저자는 기존의 웹 아키텍처가 HTTP 본래의 우수성을 잘 활용하지 못한다고 생각했기 때문에 그 장점을 최대한 활용할 수 있는 아키텍처로 REST를 소개했습니다.

     

    REST는 HTTP URI로 리소스를 정의하고 HTTP 메서드로 리소스에 대한 행위를 정의합니다. 리소스는 JSON, XML과 같은 여러 가지 언어로 표현할 수 있습니다. 

     

    REST의 특징을 지키는 API를 'RESTful하다'라고 표현합니다. 

     

    리소스

    리소스는 서비스를 제공하는 시스템의 자원을 의미하는 것으로 URI(Uniform Resource Identifier)로 정의됩니다. REST API의 URI는 리소스의 자원을 표현해야만 합니다.

     

    REST API의 URI를 설계할 때 일반적으로 다음과 같은 규칙을 적용합니다.

     

    URI는 명사를 사용한다.

    예를 들어 회원 목록을 조회하는 REST API는 다음과 같이 표현할  수 있습니다.

    - GET /members

    GET은 HTTP 메서드로 URI의 리소스를 조회하는 것의 의미합니다. members라는 명사를 통해 회원 목록임을 알 수 있습니다. 잘 표현된 URI란 이처럼 보기만 해도 직관적으로 그 의미를 이해할 수 있는 URI를 의미합니다. 만약 URI에 명사와 동사가 같이 있으면 어떤지 보겠습니다.

     

    - GET /members/select/1

    - GET /members/delete/1

     

    둘 다 조회하는 표현입니다. delete라는 동사 때문에 1번 회원을 삭제한다고 오해할 수 있습니다. 명사와 동사를 같이 사용하면 오해하는 경우가 생길 수 있습니다. 회원 삭제는 다음과 같이 표현합니다.

     

    - DELETE /members/1

     

    슬래시(/)로 계층 관계를 나타낸다.

    예를 들어 개라는 목록에는 진돗개, 불독 등이 있을 수 있습니다. 개와 진돗개의 계층 관계는 다음과 같이 나타냅니다.

     

    - GET /dogs/jindo

     

    URI의 마지막에는 슬래시를 사용하지 않는다. 

    슬래시를 넣어도 실행하는 데는 문제가 없지만 슬래시 때문에 다음 계층이 있는 것으로 오해할 수 있습니다. 명확함을 위해 마지막에는 슬래시를 넣지 않습니다.

     

    URI는 소문자로만 작성한다.

    URI 문법 형식을 나타내는 RFC 3986에서는 URI 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기 때문입니다. 대소문자를 섞어서 사용하면 URI를 기억하기 어렵고 URI를 호출할 때 잘못 쓰기 쉽습니다. 

     

    가독성을 위해 하이픈(-)을 사용할 수는 있지만 밑줄(_)은 사용하지 않는다.

     

    HTTP 메서드

    HTTP에는 여러 가지 메서드가 있는데, REST 서비스에서는 CRUD에 해당하는 네 개의 메서드를 사용합니다. CRUD란 Create, Read, Update, Delete의 약자로 소프트웨어의 기본적인 데이터 처리 기능을 나타냅니다.

     

    HTTP 메서드 의미 역할
    POST Create 리소스를 생성합니다.
    GET Read 해당 URI의 리소스를 조회합니다.
    PUT Update 해당 URI의 리소스를 수정합니다.
    DELETE Delete 해당 URI의 리소스를 삭제합니다.

     

    REST API에서는 네 개의 메서드를 이용해서 리소스에 대한 행위를 정의합니다.

     

     

     

    'Software Development > Java' 카테고리의 다른 글

    [Spring] JPA  (0) 2021.01.01
    [Spring] AOP 사용하기  (0) 2020.12.20
    [Spring] 인터셉터 사용하기  (0) 2020.12.20
    [Spring] Logback 알아보기  (0) 2020.12.19
    [Spring] 스프링 프레임워크 이해하기  (0) 2020.12.15

    댓글

Designed by Tistory.