Flask III - REST API

임동윤·2022년 10월 10일
0
post-thumbnail
post-custom-banner

API

  • 프로그램들이 서로 상호작용하는 것을 도와주는 매개체

REST

  • Representational State Transfer
  • 웹 서버가 요청을 응답하는 방법론 중 하나로 데이터가 아닌, 자원(Resourse)의 관점으로 접근

REST API

  • HTTP URI를 통해 자원을 명시하고 HTTP Method를 통해 해당 자원에 대한 CRUD를 진행

REST API 의 Stateless

  • Client의 Context를 서버에서 유지하지 않는다.

    POST /shoes는 자원에 새로운 정보를 생성
    GET /shoes 는 DB에서 shoes가 있는지 확인 후 해당 자원 반환

    (서버 입장에서) 아이템을 GET하기 위해서 POST를 진행할 필요가 없음

REST API Example

  • coffee shop Menu API 구축
from flask import Flask, jsonify, request
app = Flask(__name__)

menus = [
    {"id": 1, "name": "Espresso", "price": 3800},
    {"id": 2, "name": "Americano", "price": 4100},
    {"id": 3, "name": "CageLatte", "price": 4600},
]


@app.route('/')
def hello_flask():
    return "Hello World!!"

#GET /menus | 자료를 가지고 온다.
@app.route('/menus')
def get_menus():
    return jsonify()

#POST /menus
@app.route('/menus', methods = ['POST'])
def create_menu():
    # 전달받은 자료를 menus 자원에 추가
    request_data = request.get_json()   #{"name": ..., "price": ...}
    new_menu = {
        "id" : 4,
        "name" : request_data['name'],
        "price" : request_data['price'],
    }
    menus.append(new_menu)
    return jsonify(new_menu)

if __name__ == '__main__':
    app.run()

Postman

  • Postman을 통해 API를 테스트할 수 있다.

GET /menus

POST /menus


profile
AI Tensorflow Python
post-custom-banner

0개의 댓글