3장 첫 API 개발 시작
Flask 소개 및 설치
API 기초적인 기능 구현(ping 엔드포인트 구현)
API 실행
책에서는 가상 환경에서 실습을 진행하지만, 저는 가상 환경은 고려하지 않고 실습했습니다.
Flask 소개 및 설치
Flask는 파이썬으로 웹 애플리케이션(web application)을 구현할 때 사용되는 프레임워크(framework)다.
플라스크의 특징
- 대표적인 파이썬 프레임워크인 장고(Django)에 비해 가볍고 기능이 적어 빠르게 쉽게 배울 수 있다.
- 가볍고 배우기 쉽지만 기능이 적거나 대규모 시스템에 적합하지 않는 프레임워크가 아니다. 직접 기능을 만들 수 있는 기능도 있다.
프레임워크 : 특정 시스템을 구현하기 위해서 공통적으로 요구되는 기능들과 구조를 재사용이 가능하도록 구현해 놓은 뼈대.
라이브러리 : 역시 특정 기능을 재사용이 가능하도록 구현해 놓은 코드. 차이점은 라이브러리는 개발자, 자신의 코드 안에서 원할 때 실행하게 할 수 있고, 프레임워크는 프레임워크가 개발자의 코드를 실행하는 개념이다. (개발자는 뼈대 안에서만 구현이 가능하다고 보면 편하다.)
API 기초적인 기능 구현(ping 엔드포인트 구현)
첫 API 로 ping 엔드포인트(endpoint)를 구현할 것 이다.
*엔드포인트 : API 서버가 제공하는 통신 채널 or 접점 (클라이언트는 백엔드 API서버의 엔드포인트에 접속하는 형태로 통신한다.)
우선 api를 만들 디렉토리를 생성
mkdir ~/api
cd ~/api
생성한 디렉토리에서 'app.py' 라는 파이썬 파일을 만들고 열기
### 편하게 생성하고 들어가자
vim app.py
code app.py
ping 엔드포인트 구현하기
from flask import Flask
app = Flask(__name__)
@app.route("/ping", methods=['GET'])
def ping():
return "pong"
- 1 : Flask를 사용하기 위해서 Flask에서 Flask 클래스를 import 하기
- 2 : Import한 Flask 클래스를 객체화(instantiate)시켜서 'app' 이라는 변수에 저장했다. 이 앱이 API 애플리케이션이 된다. (이 변수에 API 설정, 엔트포이트들 추가 작업을 하면 웹 애플리케이션이 된다.)
- 3 : Flask의 route 데코레이터(decorator, 백엔드 쬐금만 해보면 익숙한 기능!)를 사용하여 엔드포인트를 등록. 이 경우에는 ping 함수를 엔드포인트 함수로 등록했고, 고유 주소는 "ping"이며 HTTP 메소드(method)는 GET으로 설정 되어 등록했다.
- 4 : route 데코레이터를 통해 엔드포인트로 등록된 'ping' 함수를 정의했다. 이 엔드포인트는 'pong' 텍스트(스트링, String)만 리턴한다.
Flask가 알아서 HTTP 응답(resonse)을 변환하여 해당 HTTP 요청(request)을 보낸 클라이언트에게 전송한다.
API 실행
해당 파일 경로에 터미널에서 다음과 같이 실행
FLASK_APP=app.py FLASK_DEBUG=1 flask run
- FLASK_APP 환경 변수에는 Flask 애플리케이션을 실행시킬 파일을 지정해 주면 된다. (이 경우에는 app.py)
*파일 경로 조심하자! 디렉터리를 못 찾을 수도 있다!
- FLASK_DEBUG 환경 변수를 1로 지정하면 디버그(debug)모드 활성화, 0으로 지정하면 비활성화다.
- 실행되면 localhost IP 주소에서 실행되고 있을것이라고 터미널에서 알려준다.
httpie
터미널 환경에서 HTTP 요청을 보낼 수 있게 해주는 용도로 주로 사용되는 툴(tool)
httpie 설치하기!
편한 방식으로 설치하자!
brew install httpie
or
sudo apt install httpie
설치 후 다음 명령어를 설치하자
http -v GET http://localhost:5000/ping
- http - 이 명령어로 HTTP 요청을 터미널에서 보낼 수 있게 된다.
- -v : 이 옵션은 'verbose' 옵션으로 해당 HTTP 요청과 응답에 관한 추가적인 정보를 출력한다.
- GET : HTTP 메소드를 'GET'으로 지정.
- IP 주소 : 해당 HTTP 요청이 전송되어야 할 엔드포인트의 고유 주소를 지정한 것
명령어가 성공적을 실행됐다면 'ping' 요청과 'pong' 응답, 그리고 여러가지 http 정보들을 볼 수 있을 것이다.
3장 요약
파이썬의 대표격 프레임워크인 Flask를 알아보고 Flask를 통해 기초 API를 만들어 봤습니다.
httpie 사이트
https://httpie.io/