엔드포인트 : API 서버가 제공하는 통신 채널 혹은 접점

프론트엔드 서버의 클라이언트가 백엔드 API 서버와 통신할 때 엔드포인트에 접속하는 형태로 통신

각 엔드포인트는 고유의 URL 주소를 가지게 되며, 고유의 URL 주소를 통해 해당 포인트에 접속

 

각 엔드포인트는 고유의 기능을 담당

이 것들이 모여 하나의 API를 구성

ex) sign up, post, find 엔드포인트 -> sns 서비스 api

 

ping 엔드포인트는 "pong"이라는 텍스트를 return 함

-> 현재  운행되고 있는지 아닌지 정지된 상태인지를 간단히 확인할 때 사용

-> 헬스 체크 엔드포인트라고 불림

-> API 서버에 접속하지 않고 해당 API의 정상 운행 여부 체크

 

1) 디렉터리 생성 및 이동

mkdir -p ~/Projects/api
cd ~/Proejcts/api

 

2) app.py 생성

vim app.py

 

3) 작성

- i를 누르고 작성

- esc-> : -> wq -> enter 하면 저장

hyeonukdev.tistory.com/5

 

Linux Command

1) 현재 디렉터리를 알려줌 : pwd 2) 디렉터리 이동 : cd 3) 절대 경로 : /루트로 시작, 상대 경로 : .으로 시작 4) 상위 디렉터리 : cd .. , 상위의 상위 : cd ../.. 5) 현재 사용자 정보 : whoami 6) 디렉터리..

hyeonukdev.tistory.com

 

from flask import Flask

app = Flask(__name__)

@app.route("/ping", methods=['GET'])
def ping():
    return "pong"

- app 변수가 API 애플리케이션임

- Flask의 route 데코레이터를 사용하여 엔드포인트를 등록

 

4) 실행

FLASK_APP=app.py FLASK_DEBUG=1 flask run

- app.py 가 있는 곳에서 실행하기

- DEBUG=1이면 활성화

-> 코드 수정시 자동 재시작 됨

-> 개발시 유용

$ FLASK_APP=app.py FLASK_DEBUG=1 flask run
 * Serving Flask app "app.py" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 142-243-606
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

  위 처럼 실행 됨

이제 테스트 해보자

5) httpie 설치

mac -> brew install httpie
ubuntu -> sudo apt install htttpie
env -> pip install httpie

 

6) http 요청

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

shell을 하나 더 만들어서 하기

 

pong 이라고 온다면 제대로 실행됨

$  http -v GET localhost:5000/ping
GET /ping HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: localhost:5000
User-Agent: HTTPie/2.4.0



HTTP/1.0 200 OK
Content-Length: 4
Content-Type: text/html; charset=utf-8
Date: Mon, 15 Feb 2021 13:28:21 GMT
Server: Werkzeug/1.0.1 Python/3.8.5

pong

API를 개발하고 실행하고 테스트하는 과정임

HTTP 개념이 중요함

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기