ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring REST API 정의와 설계 규칙
    Spring 2020. 8. 31. 16:30
    반응형

    REST API에 대해 설명하기 전, 기본적으로 API는 무엇인지에 대해 알아야 한다.

    API란?

     API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

     

    REST API란?

    REST API에 REST는 Representational State Transfer의 약자로 소프트웨어 프로그램 아키텍처의 한 형식이다.

    REST api의 등장은 2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹(HTTP) 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표 하였다.

    Resource에 대한 행위는 HTTP Method로 표현한다

    아래가 대표적으로 사용하는 4가지 HTTP Mehtod이다.

    GET GET을 동해 해당 리소스를 조회합니다.
    POST POST를 통해 해당 URL를 요청하면 리소스를 생성합니다.
    PUT PUT을 통해 해당 리소스를 수정합니다.
    DELETE DELETE를 통해 해당 리소스를 삭제합니다.

    1. REST API 기본규칙

    1. URI는 정보의 자원을 표현해야 한다.
      1. resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
      2. resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
      3. 확장자를 사용하지 않는다. (.do)
      4. 밑줄( _ ) 을 사용하지 않고 하이픈을( - ) 사용한다.
    2. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.
      1. HTTP Method나 동사표현이 URI에 들어가면 안됩니다.
      2. :id와 같이 변하는 값은 하나의 특정 resource를 나타내는 고유값이어야 한다.

    흔히 하는 실수는 URI에 자원에 대한 행위를 넣는 것이다.

    //잘못된 설계

    전체조회 @GetMapping(/member/get)

    특정조회 @GetMapping(/member/get/{id})

    등록 @PostMapping(/member/create)

    삭제 @GetMappiong(/member/delete/{id})

    수정 @PostMapping(/member/update/{id})

    //올바른 설계

    전체조회 @GetMapping(/member)

    특정조회 @GetMapping(/member/{id})

    등록 @PostMapping(/member)

    삭제 @DeleteMappiong(/member/{id})

    수정 @PutMapping(/member/{id})

     

    2. Rest API 세부규칙

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

    http://www.example.com/fruits/banana

    URI의 마지막엔 슬래시(/)를 포함하지 않는다.

    http://www.example.com/fruits/banana/ (X)

    가독성을 높이기 위해 하이픈(-)을 사용할 수 있으나 언더바(_)를 사용하진 않는다.

    http://www.example.com/tropical_fruits/banana/ (X) http://www.example.com/tropical-fruits/banana/ (O)

    URI 경로에는 소문자를 쓴다.

    http://api.example.restapi.org/my-folder/my-doc

    리소스간 연관관계가 있는 경우

    /리소스명/리소스ID/관계있는 다른 리소스명(일반적으로 소유has의 관계)

    @GetMapping(/member/{id}/spec)

     

     

     

    <본문의 출처>

    https://one-it.tistory.com/entry/RESTful-API-%EC%84%A4%EA%B3%84-%EA%B7%9C%EC%B9%99

    https://velog.io/@wlsdud2194/HTTP-REST-API-%EB%9E%80

    반응형

    댓글

Designed by Tistory.