ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB] Restful API
    CS/WEB 2021. 8. 9. 20:22

    📝 Restful API


    💻 REST(REpresentational State Transfer)

    ✔ HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다.

    ✔ Restful한 API가 되기 위해서는 REST의 특징을 갖추어야 한다.

     

     

    🔧 REST의 특징

    • 일관된 인터페이스: URI로 지정한 리소스에 대한 조작 요청은 클라이언트의 플랫폼에 무관하며, 특정 언어에 종속받지 않는다.
    • 무상태성(Stateless): 이전 요청이 다음 요청과 연관되지 않는다.
    • 캐시: 캐싱 기능을 적용할 수 있다.
    • 자체 표현 구조: 요청 메시지만 보고도 이를 쉽게 이해할 수 있어야 한다. 
    • 클라이언트-서버 구조: REST서버는 API제공, 클라이언트는 자원 요청, 사용자 인증 이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조이다.
    • 계층형 구조: REST 서버는 다중 계층으로 구성될 수 있으며 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은 네트워크 기반의 중간매체를 사용할 수 있게 한다.

     

     

    💻 Restful API

     

    🔧 RESTful API의 구성

    • 자원(Resource) - URI
    • 행위(Method) - HTTP METHOD
    • 표현(Representation Of Resource) - DATA

     

     

    🔧 RESTful API의 규칙

    • URI는 명사를 사용한다.
    • 슬래시로 계층 관계를 표현한다.
    • URI의 마지막에는 슬래시를 붙이지 않는다.
    • URI는 소문자로만 구성한다.
    • 가독성이 떨어지는 경우 하이픈(-)을 사용한다.

     

     

    🔧 Restful API의 장점

    • 원하는 타입으로 데이터를 주고 받을 수 있다.

     

     

    🔧 Restful API의 단점

    • 사용할 수 있는 메소드가 4가지 밖에 없다.
    • HTTP 통신 모델에 대해서만 지원한다.

     

     

    💻 HTTP 응답 상태 코드

    ✔ REST API는 URI만 잘 설계된 것이 아닌 그 리소스에 대한 응답을 잘 내어주어야 한다.

     

    🔧 200번대

    • 200: 클라이언트의 요청을 정상적으로 수행했다.
    • 201: 클라이언트가 어떠한 리소스 생성을 요청하고, 해당 리소스가 성공적으로 생성되었다.(POST요청)
    • 202: 클라이언트의 요청은 정삭적이나, 서버가 아직 요청을 완료하지 못했다.

     

     

    🔧 300번대

    • 302: 클라이언트가 요청한 리소스가 임시적으로 새로운 URL로 리다이렉트됐다.

     

     

    🔧 400번대

    • 400: 클라이언트의 요청이 부적절한 경우이다.
    • 401: 인증되지 않은 클라이언트가 권한이 없어 작업을 진행할 수 없는 경우이다.
    • 403: 인증된 클라이언트가 권한이 없어 작업을 진행할 수 없는 경우이다.
    • 404: 클라이언트가 요청한 자원이 존재하지 않는다.
    • 405: 클라이언트가 요청한 리소스에서 사용 불가능한 Method(get, post, delete, put)를 이용한 경우이다.

     

     

    🔧 500번대

    • 서버 오류로 인해 요청을 수행할 수 없다.

     

     

     

     

    REFERENCE

    https://mangkyu.tistory.com/46

    https://meetup.toast.com/posts/92

     

    'CS > WEB' 카테고리의 다른 글

    [WEB]웹 서버 VS WAS  (0) 2021.07.19
    [WEB]CORS  (0) 2021.07.13
    WEB - AJAX  (0) 2021.02.26
    WEB - WAS  (0) 2021.02.20
    WEB - SPA  (0) 2021.02.20

    댓글

Designed by Tistory.