3. 첫 API 개발시작

다음 글은 <깔끔한 파이썬 탄탄한 백엔드> 책을 정리한 내용입니다

첫 API개발 시작

  • 프레임워크: 특정 시스템을 구현하기 위해 공통적으로 요구되는 기능들과 구조를

재사용이 가능하도록 구현한 것

​ 예. 웹시스템은 소켓을 통해서 네트워크와 연결하여 외부 시스템으로부터 통신을 주고받음

  • 라이브러리와 프레임워크의 차이점:
    • 라이브러리: 개발자가 자신의 코드안에서 실행, 개발자의 코드 안에 일부분으로 포함되어 개발자가 원하는 대로 사용 가능
    • 프레임워크: 프레임워크가 개발자의 코드를 실행, 프레임워크가 제공하는 틀 안에서 개발자가 필요한 로직을 구현

ping EndPoint 구현하기

  • 엔드포인트: api서버가 제공하는 통신 채널/ 접점

    • 프론트엔드 서버등의 클라이언트가 백엔드 api 서버와 통신할 때, 엔드포인트에 접속하는 형태로 통신함
    • 각 엔드포인트는 고유의 url 주소를 가지게 되며, 고유의 url 주소를 통해 해당 엔드포인트에 접속할 수 있다.
    • 엔드포인트들이 모여서 하나의 api를 구성
      • 예: sns 서비스를 위한 api는 사용자 sign up 엔드포인트, 사용자 로그인 엔드포인트, 새로운 포스팅 생성 엔드포인트, 등의 여러 엔드포인트들로 구성됨
  • ping end-point: pong 이라는 텍스트를 리텀하는 엔드포인트

    • Ping end-point를 호출하면 'pong' 이라고 응답
    • Api 서버가 현재 운행되고 있는지 아니면 정지되어있는 상태인지를 간단하게 확인할 때 사용 -> Health check 엔드포인트

만들기

앞으로 만들 api 코드가 위치할 디렉터리 생성

mkdir -p ~/Projects/api

  • mkdir: make directory

  • -p : 디렉터리의 중간경로에 해당하는 디렉터리(Projects)가 이미 존재하지 않으면 자동으로 생성

  • ~ : 해당 사용자의 홈 디렉터리를 의미

Api 디렉터리 생성 후 해당 디렉터리로 이동*

cd ~/Projects/api

app.py 파일 생성

vim app.py

from flask import Flask
app = Flask(__name__)
#import한 flask 클래스를 인스턴스화 시켜서 app이라는 변수에 저장
#이 app 변수가 api 애플리케이션
#app 변수에 api설정과 엔드포인트를 추가하면 api가 완성됨

@app.route('/ping', methods=['GET'])
#flask의 route 데코레이터를 사용하여 엔드포인트를 등록
#고유주소는 ping이며, http 메소는 get으로 설정
def ping():
	#route 데토레이터를 통해 엔드포인트로 등록된 함수
	#pong 텍스트만을 리턴함
	#flask가 알아서 http response로 변환하여 해당 http request를 보낸 클라이언트에게 전송함
	return 'pong'

어떻게 엔드포인트를 저장하는가에 집중!!

flask에서는 route 데코레이터를 이용하여 함수들을 엔드포인트로 등록함

(해당 api가 제공하는 서비스(비즈니스 로직)을 구현하는 함수들을 개발하는 것이 백엔드 api의 큰 부분이다)

api 실행하기

파이썬 가상환경을 활성화한 상태에서 실행

FLASK_APP=app.py FLASK_DEBUG=1 flask run

  • FLASK_APP 환경변수에는 flask애플리케이션을 실행시키는 파일을 지정 -> app.py파일로 지정

주의: 지정된 파일이 명령어를 실행시키는 디렉터리에서 찾을 수 있어야함 -> flask를 실행시키는 명령어는 해당 api의 repository 디렉터리에서 실행해야함

  • FLASK_DEBUG 환경변수를 1로 지정하면 디버그 모드가 활성화됨
    • Debug mode: on
    • Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
      • 로컬 호스트에서 app.py(방금 실행시킨 api)가 돌아가고 있음
    • Restarting with stat
    • Debugger is active!
    • Debugger PIN: 303-455-495

ping endpoint가 제대로 돌아가는지 api에 실제로 접속해서 테스트해보자

  • Ping 엔드포인트에 접속하기 위해서는 ping 엔드포인트에 http request를 보냄

  • Httpie라는 툴을 쓰면 터미널 명령어 환경에서 http 요청을 보낼 수 있음

  • httpie가 설치 되었으면 http라는 명령어를 터미널에서 사용하여 http요청을 보냄

  • api가 실행되고 있는 상태에서 터미널을 하나 더 열어서 명령어 실행

    http -v GET http://localhost:5000/ping

    • http 명령어를 통해 http 요청을 터미널에서 보낼 수 있음
    • -v: verbose 옵션으로 해당 http 요청과 응답에 관한 추가적인 정보를 출력함
    • GET: 해당 http요청의 http메소드를 get으로 지정
    • 해당 http 요청이 전송되어야 할 엔드포인트의 고유주소 지정
      • 127.0.0.1 IP주소의 포트 5000번에서 실행되고 있는 api 의 ping 주소에 지정되어있는 엔드포인트로 http 요청을 보내라고 명령함
      • 우리가 방금 실행시킨 api가 로컬 호스트의 5000번 포트에서 실행되고 있다

좋은 웹페이지 즐겨찾기