TIL 22 | REST API

daekuenhan·2021년 9월 8일
0
post-thumbnail

API란?

Application Programming Interface의 약자이다.
서로 다른 프로그램간에 소통할 수 있게 도와주는 통신 규약을 뜻한다.

이걸 웹에서 사용하면 '서버와 고객간의 통신 규약'을 의미한다.
'서버에게 요청해서 데이터를 가져오는 방법'을 API라고 할 수 있다.

app.get('/write', (req, resp) => {
    resp.sendFile(__dirname +'/write.html');
});

위의 코드는 누군가 /write로 접속하면 write.html을 보내주셈을 뜻한다.
이게 바로 서버의 API이다. 서버와 통신 할 수 있는 방법을 정의한 코드이기 때문이다.
write.html을 보고싶으면 /write로 접속하셈 이라는 API를 정의한 코드이다.

API들을 만들 때 REST풀 하게 만드는 것이 좋다고 한다.

REST API란?

예전에는 API에 일관성도 없고 막 만들어 놓아서 서버와 통신하기 어려웠다고 한다.

로이 필딩이라는 사람이 HTTP 요청 시스템(GET, POST, PUT, DELETE)를 REST 원칙에 의해서 쓰면
좋을 것 같다고 논문을 썻는데 , 이제 그것이 바이블처럼 여겨진다고 한다.

REST 6가지 원칙

1. Uniform interface

  • 인터페이스는 일관성이 있어야 한다.
  • 하나의 URL로는 하나의 데이터를 가져와야한다.
  • 간결하고 예측가능하게 짜야한다.
  • URL 이름짓기 관습을 잘 따라줘야 한다.

2.Client-server 역할 구분하기

  • 브라우저는 요청만 할 뿐
  • 서버는 응답만 할 뿐

3. Stateless

  • 요청들은 각각 독립적으로 처리되어야 한다. 즉 요청1과 요청2가 의존성이 있으면 안된다.
  • 요청하나 만으로 자료를 가져오기 충분하도록 요청에 필요한 모든 정보를 실어 보내주어야 한다.

4. Cacheable

  • 요청을 통해 보내는 자료들은 캐싱이 가능해야한다.
  • 그리고 캐싱가능하다고 표시하거나 캐싱 기간을 설정해주어야 한다.

캐싱이란?
특정 사이트를 방문하면 크롬 브라우저는 자동으로 자주 사용하는 img , css 파일을 등을 하드에 저장해놓는다. 나중에 그 사이트를 다시 방문하게 되면 서버에 img, css를 주세요 라고 요청하지 않아도 하드에서 불러 올 수 있다. 이것을 캐싱이라고 한다.

5. Layered System

  • 요청 처리하는곳, DB에 저장하는곳 이런 여러가지 단계를 거쳐서 요청을 처리해도 된다
  • 즉 여러개의 레이어를 거쳐서 요청을 처리하게 만들어도 된다.

6. Code on Demand

  • 서버는 고객에게 실제 실행가능한 코드를 전송해줄 수도 있다.

URL 이름짓기 관습.

facebook.com/natgeo/photos
facebook.com/bbc/photos

위의 URL은 페이스북이 매우 잘 만든 API이다.
URL만봐도 네셔널지오그래픽, bbc의 페이스북 계정의 사진첩인 느낌이 들기 때문.

이것이 위에서 언급했던 간결하고 예측이 가능하게 만들어야 한다는 것의 대표적인 예시이다.

이렇게 이브꼐 만들수 있는 방법에는 대표적으로

  • 단어들을 동사보다는 명사 위주로 구성
  • 어떤 정보가 들어올지 예측이 가능하도록
  • 띄어쓰기는 대시 기호 사용 '-'
  • 하위 문서들을 뜻할 땐 / 기호 사용
  • 파일 확장자 쓰지 말기

이런것들이 있다.

마무리

API라고 말만했지 정확히 무엇을 의미하는지 잘 몰랏다.
코딩애플 강의를 들으면서 쉽고 정확하게 REST API에 대해서 알 수 있어서 너무 좋앗다.

이제 백엔드 과정에 살짝 발을 담궛는데 너무 중요한 개념에 대해서 잡고가는거 같아 기분이 좋다.
앞으로 서버API를 만들때 오늘 배운 개념들을 유의하면서 만들도록 하겠다.

profile
새로운 시작을 준비하는 놈

0개의 댓글