본문으로 바로가기

[REST API] 생활 코딩 REST API 강의 내용 정리

category 프로그램 기법 2022. 4. 15. 02:55

목적

생활 코딩님의 REST API 강의를 듣고 정리, REST API의 개념에 대해 알아보고자 한다.

내용

수업 소개

  • 기계와 기계가 통신을 할 때 정해진 규칙이 있다면 얼마나 좋을까요
  • 그렇게 되면 통신 규칙을 어떻게 정할 것인가에 대해 덜 고민할 수 있으니까요
  • 지금부터 기계와 기계가 규격화된 방식으로 인터넷으로 또 웹을 이용해서 통신할 수 있도록 돕는 통신 규칙인 REST API 수업을 시작하겠습니다.
  • REST API는 웹의 통신 규약인  HTTP를 이용합니다. HTTP 입문 강의 먼저 들어주세요.

API

  • API 라는 것은 컴퓨터의 기능을 실행시키는 것입니다. 
    • 'Hello world'를 출력하는 print, write 등도 전부 API라고 불릴 수 있습니다.
  • REST API도 컴퓨터의 기능을 실행 시키는 명령이라고 할 수 있습니다. 근데 남의 컴퓨터를 실행시킵니다.
    • ex) 이 주소로 접속하면 트위터의 글을 가져올 수 있습니다. 추가, 수정, 삭제도 가능합니다.
  • 이렇게 인터넷과 웹을 통해서 나의 컴퓨터를 제어할 떄 어떻게 하면 시행착오를 줄이고 더 좋은 API를 만들 수 있는 가에 대한 고민의 결과물이 REST API입니다.
  • REST API는 특정 기술이 아닙니다.
    • HTTP를 이용해서 기계들이 통신할 떄 HTTP가 가진 잠재력을 최대한 이용할 수 있도록 유도하기 위한 말하자면 모범 사례라고 볼 수 있습니다.

사례

  • 여러분이 블로그나 SNS를 한다고 할 때 하나 하나 글을 topic이라고 한다면 이런 모양으로 갖고 있겠죠.
  • 이런 모양 = 동영상에서 테이블 형태 topic 정보 

Resource

  • 행과 열이 있는 테이블 형태 = 이런 데이터들을 REST API에선  Resource라고 합니다.
    • Resource는 URI를 통해서 표현됩니다.
    • 예를 들어 명칭을 topic이라고 할 때 전체를 식별하고 싶다면 또는 여러 개의 topic을 식별하고 싶다면
    • 이런 URI 를 사용합니다. 이러한 것을 Collection 이라고 해요.
      • ex) http://example.com/topics (s가 붙었죠)
    • 행 하나하나 : 이러한 것을 Element 라고 해요.
      • ex) http://example.com/topics/1 
  • 즉 Element가 모인 것이 Collection
  • 하지만 Resource를 URI로 표현한 것만으로 아무것도 할 수 없다.
  • 이 정보를 가공할 수 있어야 합니다.

Method

  • 정보 가공 방법 - CRUD 
    • Create, Read, Update, Delete
    • 위 4가지 작업을 REST API에선 method라고 합니다.
    • REST API는 웹의 통신 규약인 HTTP를 이용하기 때문에 HTTP가 가지고 있는 메소드를 이용합니다.
  • Create (post)
    • 실제 웹 애플리케이션은 form을 이용해 데이터를 전송할 때 쓰지만 사실 post는 생성을 위해 준비된 기능
    • REST API는 HTTP들의 Method들을 용도에 맞게 쓰나는 것도 중요한 목표이므로 생성만 사용
  • Read (get)
  • Update (put, patch)
    • put : 전체 업데이트
    • patch : 부분 업데이트
  • Delete (delete)

실습 소개

  • 지금부터는 웹 브라우저에서 웹 서버에 Ajax를 위한 API인 fetch라는 것을 이용해서 REST API를 이용하는 방법을 소개해보겠습니다.
  • 이 수업은 웹에 국한된 것이 아니에요. 모바일 앱, 웹 서버가 다른 웹 서버와 통신하는 것도 포함됩니다.
  • 수업은 사례일 뿐이므로 자신의 상상력에 맞게 수업들 들어주시길 바랍니다.

실습 방법, 시작

  • Github 참고 : egoing - rest-api-lab 

생성(Create, post)

  • 우리가 하려고 한 것은 데이터를 생성하는 것이므로 생성이 HTTP 프로토콜에선 post이므로 method로 post를 쓴다.
  • REST API에서 규정하고 있지 않은 것은 서버와 클라이언트가 어떤 데이터 타입으로 통신할 건지 규정하지 않아요.
  • (json, xml 다 사용해도 된다.)
  • REST API에서 규정하고 권고하는 것
    • Resource를 식별할 땐 URI로 식별한다.
    • 그리고 어떤 행위를 할 때는 post, get, patch, delete와 같은 HTTP의 고유한 method를 이용한다.
    • 결과를 알려줄 땐 응답 코드를 정확히 사용하여 돌려준다.
  • 즉 HTTP 프로토콜을 HTTP 프로토콜 답게 사용하자라는 것이 REST API가 주장하는 바입니다.

읽기(Read, get)

  • Collection 읽는 방법 (여러 개) 
    • 그냥 URI 뒤에 안 붙임 ex) /topics
  • Elements 읽는 방법 (한 개 한 개)
    • 그냥 URI 뒤에 개별 id 붙임 ex) /topics/3

수정(Update, put or patch)

  • patch (부분 수정)
    • 개별 업데이트 
  • put (전체 수정)
    • 전체 다 업데이트
    • ex) 기존 title, body 값이 있을 때 put으로 title을 없데이트하면 body 값이 사라진다.
    • 즉 언급하지 않은 데이터는 삭제 된다.

삭제(Delete, delete)

  • 이건 그냥 삭제되니까 자세한 설명은 생략
  • Collection 전체 삭제는 위험해서 막혀있는 경우가 많다.

관계

  • 이번에는 관계를 알아보자.
  • Resource와 Resource 와의 관계를 맺고 있을 때 그걸 어떻게 URI에 표현할 수 있을까
    • ex) topics 부모, comments 자식
    •     /topics/1/comments => topics 1번글의 댓글들

마무리

  • 이렇게 해서 REST API에 대해 알아봤습니다.
  • REST API는 복잡한 권고안이 아니에요 기계와 기계가 HTTP를 이용해서 통신할 때 
    • Resource는 URI로
    • 행위는 method로
    • 결과는 응답 코드로
    • HTTP가 원래 가지고 있는 원래 의미를 잘 활용하자는 것이라고 할 수 있습니다.
  • REST API의 의미에 대해 알게되신 점 축하드립니다

후기

강의를 듣기 전엔 REST API의 범위는 굉장히 넓었다.

자원(resource)의 표현(representation) 에 의한 상태 전달이라고 알고 있었는데 이게 도저히 무슨 말인지 감이 안 왔다.

생활 코딩님의 강의를 듣고 REST API의 개념과 의도하는 바를 알게 되었다.

양질의 강의를 제공해주셔서 감사합니다!!

필기 사진

'프로그램 기법' 카테고리의 다른 글

[ORM][면접 질문] ORM이 뭔지 아세요?  (0) 2022.04.14