API(Application Programming Interface)

YoungMinKim·2020년 11월 8일
0

Section 01


Goal

기존에 확실한 개념을 잡지 않고 사용하고 있던 API, Interface에 대해 간략히 정리 해보자.

API(Application Programming Interface)

  • 응용 프로그램 간에 데이터를 주고 받는 방법을 API(Application Programming Interface)라 한다.
  • 프로그램과 또 다른 프로그램연결해주는 일종의 다리(미들 웨어)라고 볼 수 있다.

API

특정 데이터를 제공하는 서버가 존재할 때 우리가 만든 응용 프로그램이 서버에 데이터를 요청 할 수 있다. 이 때 컴퓨터 끼리 데이터를 주고 받는 것이기 때문에 어떠한 양식을 필요로 한다.

데이터를 제공 해주는 해당 서버가 인가되지 않은 사용자에게 데이터를 제공하지 않도록 API(미들웨어)내에서 흐름 제어를 수행 할 수 있다.

API는 중간 다리(미들웨어)역할을 한다 위에서 말했다. 또한 데이터를 제공해주는 서버에 대한 호출 제한을 하는 역할을 담당 하기도 한다.

Interface

어떠한 두 가지가 서로 연결되고 영향을 미칠 수 있는 장소 / 방법 / 상황을 의미 한다.

  • 사람 : 사람
  • 사람 : 기계 (키보드, 마우스)
  • 기계 : 기계

우리는 키보드를 통해 컴퓨터에 명령을 내리거나 요청을 할 수 있다.
이러한 부분을 사람기계 사이의 Interface라 한다.

Section 02


Goal

RESTREST API에 대해 간략히 정리 해보자.

REST(Representational State Transfer)

  • 자원의 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
  • REST어떤 형식을 나타내는 말을 의미 한다.
  • 사이트의 구성 원리를 의미 한다.

REST 아키텍쳐의 6가지 제한 조건

  • 클라이언트 / 서버 구조
  • 무상태 (Stateless)
  • 캐시 처리 가능 (Cacheable)
  • 계층화 (Layered System)
  • Code on demand (optional)
  • 인터페이스 일관성

HTTP에는 이미 REST 원칙이 녹아 들어 있다.

REST하게 만든다?

REST의 구체적인 개념

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것이다.

즉, REST는 자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.

웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.

CRUD Operation

  • Create : 생성(POST)
  • Read : 조회(GET)
  • Update : 수정(PUT)
  • Delete : 삭제(DELETE)
  • HEAD: header 정보 조회(HEAD)

REST의 역사

Q : 어떻게 인터넷에서 정보를 공유 할 것인가?

A : 정보들을 하이퍼 텍스트로 연결한다.

  • 표현 형식 : HTML
  • 식별자 : URI
  • 전송 방법 : HTTP/1.0 (1994-1996)

REST (1999)
Roy T. Fielding,
Microsoft Research에서 발표

REST (2000)
Roy T. Fielding,
박사 논문에서 발표 하였음.

REST가 웹의 독립적 진화에 도움을 주었나?

  • HTTP에 지속적으로 영향을 줌
  • Host 헤더 추가
  • 길이 제한을 다루는 방법이 명시 (414 URI Too Long 등)
  • URI에서 리소스의 정의가 추상적으로 변경됨 : "식별하고자 하는 무언가"
  • 기타 HTTP와 URI에 많은 영향을 줌
  • HTTP/1.1 명세 최신판에서 REST에 대한 언급이 들어감

REST API?

오늘날에 존재하는 API는 실제로 REST API가 아니지만 REST API라고 부른다. (현재 상태)

참고

Day1, 2-2. 그런 REST API로 괜찮은가

Section 03


Goal

서버는 H/W적 관점에서는 서버가 설치되 있는 소형 컴퓨터를 의미 한다. 또한 S/W적 관점에서 서버는 정적 컨텐츠(Html, js, css, image)를 처리하는 서버(Nginx, Apache)의 역할을 수행 한다.

Server

  • 서버도 우리가 흔히 사용하는 데스크탑 컴퓨터 혹은 노트북과 동일한 개념을 갖는다.
  • 사실 서버란 말은 역할의 개념이다.

역할의 개념?

  • 한 컴퓨터가 네트워크로 연결된 다른 하나, 또는 그 이상의 컴퓨터에게 뭔가를 제공.
  • 저장된 사진을 제공 해주며, 위 데이터를 업로드 받아서 보관 해준다.
  • 한 컴퓨터가 톡을 보내면 다른 컴퓨터에 알림을 제공 해준다.
  • 여럿이 참여할 수 있는 게임을 열어 준다.
  • 위치, 목적지를 받아서 가는 길과 소요 시간을 제공 해준다.

클라이언트 - 서버 01

  • Serve해주는 컴퓨터가 서버, 서비스를 제공 받는 컴퓨터를 Client라 한다.
  • 하지만 클라이언트와 서버의 개념이 항상 같은 것은 아니다.

클라이언트 - 서버 02

  • 하지만 서버 컴퓨터가 클라이언트의 역할이 될 수 도 있다.
  • 즉, 서비스를 받는 쪽이 클라이언트 서비스를 제공해주는 쪽이 서버가 된다.

서버 사이드 스크립트

Client → Server의 흐름은 위 같이 표현이 된다.

서버 구분

FrontEnd → Client Side Script
BackEnd → Server Side Script

즉, 쉽게 말해 Server Side Script 언어는 서버에서 값을 변경하거나 수정 할 수 있지만, Client Side Script는 Html 페이지의 변경이나 수정 없이 있는 그대로 보여주는 것을 의미 한다.

참고 사이트

서버란 무엇인가요?

profile
https://ym1085.github.io

0개의 댓글