💪 Today I Learned

API

  • Application Programming Interface

소프트 스퀘어드 4주차 수업 내용은 API였다. 전공자로써 수도 없이 들어본 용어이지만 정작 정확한 의미를 모르고 있었다. 쉽게 program 간의 매개체 정도로 정의할 수 있을 것 같다.
조금 더 쉬운 예시를 들자면, 사람이 스마트폰 홈 화면을 보기 위해 전원 버튼을 누르는 모습을 상상해보자. 사람은 전원 버튼을 누르면 홈 화면을 볼 수 있다는 사실을 알고 있다. 하지만 어떻게 홈 화면을 보여주는지 내부 로직은 모른다. 이것이 API 의 핵심이다.

API 명세서

API 명세서는 단순히 여러 API 리스트의 집합만을 의미하지 않는다. 그 안에는 API 관련된 여러 것들이 정의되어 있고, 그로 인해 클라이언트와 서버의 소통 창구라고 볼 수 있다.

HTTP Method

  • GET : 조회
  • POST : 생성
  • PUT : 수정
  • PATCH : 일부 수정
  • DELETE : 삭제

흔히 GET / POST 방식의 차이를 보안성 관련해서 정의하는 사람들이 많은데 이는 완벽한 정답이 아니라고 한다. GET 방식은 querystring을 쓰기 때문에 URL에 다 드러나니 보안에 취약한 것이 맞지 않을까? 물론 나도 여태껏 이렇게 생각해왔다.
하지만 이들은 서버 측 자원에 대한 행위로서 구분되어야 한다. GET 방식은 데이터베이스에 저장되어 있는 내용을 조회하는 용도, POST 방식은 클라이언트에서 준 내용을 데이터베이스에 새롭게 저장하는 용도이다. 그러므로 단순히 보안성 측면에서만 차이를 말하는 것은 옳지 않다.

🏃 한마디

오늘 수업 내용은 정말 재밌었다. 재작년에 들었던 컴퓨터 네트워크 수업 생각도 났고, 점점 서버 개발자의 역량을 갖춰나가는 것 같다. 4주차 과제는 말로만 듣던 Restful API를 만드는 것이다. 또 한 주 동안 열심히 과제하며 많이 배워야겠다.