본문 바로가기
활동/코멘토 React 실무PT

[Comento React 실무PT] 4. REST API

by MarigoldJ 2022. 2. 17.

스스로 이해한 내용으로 정리했음. 주관이 들어간 글임을 밝힘.

기본 내용 정리

이번에 다룰 내용은 REST API이다.

추가로 수업시간에는 Postman API Tool을 다루었지만, 아직 스스로 다루지 못하였다.

대신 백엔드 서버에 API 구성한 것을 조금 다뤄본다.

API

  • API : 클라이언트가 서버에게 데이터를 요청/접근할 수 있는 인터페이스

내가 API에 대해 아는 바로 쉽게 설명하자면 다음과 같다.

클라이언트가 어딘가에 저장되어 있는 데이터를 읽고 쓰고 하려면, 서버에게 요청을 해야한다.
이때 요청하는 창구가 API라고 볼 수 있다.

그 중에서 REST API는 대표적인 API 방법론 중 하나다. 다른 방법론으로는 SOAP API나 GraphQL이 있다.

REST API와 GraphQL은 아래 예시와 같은 차이가 있다.

예시) 학생정보와 학생이 듣는 수업정보를 가져올 때
* REST API (2번 요청함)
http://example.com/students/(studentId)
http://example.com/students/classes

* GraphQL (1번 요청함)
query {
student(id: studentId) {
name
classes {
title
...
}
...
}
}

위와 같이 REST API는 리소스별로 요청을 하는 반면, GraphQL은 하나의 query에서 모두 요청이 가능하다.

또한 REST API는 정해진 형태로만 응답하기 때문에, 필요없는 데이터를 반환받기도 하는 반면,

GraphQL은 요청에서 원하는 데이터만 골라서 응답하여 필요없는 데이터 반환이 존재하지 않는다.

이렇게만 보면 GraphQL이 무조건 좋아보이지만, 단점이 있다.

  • File 전송 등 Text만으로 하기 힘든 내용들을 처리하기 복잡하다.
  • 고정된 요청과 응답만 필요한 경우에는 오히려 REST API가 요청문이 짧다.
  • 재귀적인 Query가 불가능하여, 응답의 깊이가 더 깊은 API를 만들 수 없다.

REST API

REST API는 HTTP 프로토콜을 활용한다.

  • HTTP URI : 자원 명시
  • HTTP Method : CRUD operation 명시

이때 HTTP Method는 CRUD를 수행하는데, 각각 아래와 같은 요청이 가능하다.

  • Create : 생성 - POST
  • Read : 조회 - GET
  • Update : 수정 - PUT, PATCH
  • Delete : 삭제 - DELETE

Restful하다?

  • REST 조건을 만족하는 API
  • REST 설계 규칙에 맞춘 API

규칙들을 한번 보면 별거 없다. (아래에 모든 규칙을 쓰지는 않았다.)

  • 동사보다는 명사로.
  • 단수 명사보다는 복수 명사로.
  • 밑줄(_)는 사용 금지.
  • 슬래시(/)로 계층 관계 표현하기, 단 마지막에는 사용하지 않음.
  • 파일 확장자는 포함 금지.

백엔드 구성해보기

원래 수업에서는 Postman이라는 API tool을 사용했으나, 이는 만들어진 백엔드 서버의 테스트 용이 주 목적이다.

본인은 그 전에 백엔드 서버를 간단히 만들어보았다.

express와 mongoDB를 활용해서 최대한 간단히(?) 서버를 만들어보았다.

참고한 블로그 글을 첨부한다.
블로그 글
블로그 주인분의 소스코드

내가 짠 코드는 아래 링크에 있다.
내가 짠 코드

 

GitHub - MarigoldJ/codeschool-server

Contribute to MarigoldJ/codeschool-server development by creating an account on GitHub.

github.com

대강 설명하자면 express로 REST API를 만들어 놓고, mongoDB에다가 데이터를 저장했다.


[코멘토 바로가기] https://bit.ly/3D9XCOz

댓글