Rest API

Updated:

Restful한 api를 만들기에 앞서 몇가지 규칙과 restapi가 무엇인지, 그리고 http method에 대해서 알아보도록 하자.

Rest api

Rest는 쉽게 말해 웹의 장점을 최대한 활용할 수 있는 아키텍쳐라고 볼 수 있다.
http기반으로 필요한 자원에 접근하는 방식을 정해놓은 아키택쳐이다.
Rest api는 Rest를 통해 api를 개발한 것이다.
Rest api는 자원(resource) - uri , 행위(verb) - HTTP METHOD , 표현으로 구성되어 있다.
그러면 rest api로 구현하기 위한 몇가지 규칙을 알아보도록 하자

1.1. URI는 정보의 자원을 표현해야 한다.

리소스명은 동사보다는 명사를 사용한다.
슬래시 구분자(/)는 계층 관계를 나타내는데 사용되며, URI 마지막 문자로 슬래시(/)를 포함하지 않는다.

1.2. 자원에 대한 행위는 HTTP Method로 표현한다.

Http 프로토콜은 여러가지 사용목적에 따라 Httpmethod를 제공하고 있다. URI는 자원을 표현하는데 중점을 두고 행위에 대한 표현이 URI에 들어가면 안된다.
행위에 대한 표현은 HTTP METHOD를 사용한다.

  1. POST - POST를 통해 URI를 요청하면 리소스를 생성한다.(쓰기)
  2. GET - GET을 통해 해당 리소슬르 조회한다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가지고 온다.(읽기)
  3. PUT - PUT을 통해 해당 리소스를 수정한다.(수정)
  4. DELETE - DELETE를 통해 리소스 삭제(삭제)
Get /user/insert/2 (x)
Get /user/2 (o)


Rest의 특징

  • Uniform interface
    http표준만 맞다면 어떤 기술도 적용이 가능한 인터페이스 스타일이다.
  • Stateless
    들어오는 요청만을 단순히 처리하고 불필요한 정보를 관리하지 않는다. 즉, 세션과 쿠기와 같은 컨텍스트 정보를 신경쓰지 않아 구현이 단순하다.
  • Cacheable
    http가 캐싱 기능을 적용할 수 있다.
  • Server-client 구조
    Rest의 특징 중 하나가 Client-server의 구조가 확실히 구분된다는 점이다. Rest서버는 api를 제공하고, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보)등을 직접 관리하는 구조이다. 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어든다.
    나는 Restful한 api를 spring boot로 구현하고 vuejs로 클라이언트를 구현할 예정이다.

Reference

https://daddyprogrammer.org/post/404/spring-boot2-design-api-interface-and-data-structure/ https://meetup.toast.com/posts/92 https://velog.io/@jacob0122/REST-REST-API-RESTful-API

Leave a comment