반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

chargingport

Flask 활용한 API 만들기 본문

NOTES/PYTHON

Flask 활용한 API 만들기

chargingport 2023. 9. 18. 16:43
반응형
# teacher.json

[
    {
        "id": 1,
        "name": "John Doe",
        "class": "English"
    },
    {
        "id": 2,
        "name": "Jack Black",
        "class": "Music"
    },
    {
        "id": 3,
        "name": "Eminem",
        "class": "Music"
    },
    {
        "id": 4,
        "name": "John Doe",
        "class": "Music"
    }
]

 

from flask import Flask, jsonify, request
import json

app = Flask(__name__)

# Load the tea data from the JSON file
with open('teacher.json', 'r') as file:
    teachers = json.load(file)

# Helper function for responding with tea data or an error
def get_teacher_response(teacher):
    if teacher:
        return jsonify(teacher)
    else:
        return jsonify({"error": "Teacher not found"}), 404

# JSON 전체 응답
@app.route('/teachers', methods=['GET'])
def get_teachers():
    return jsonify(teachers)

# 동일한 id만 응답
@app.route('/teachers/<int:teacher_id>', methods=['GET'])
def get_teacher_by_ID(teacher_id):
    teacher = next((teacher for teacher in teachers if teacher['id'] == teacher_id), None)
    return get_teacher_response(teacher)

# 동일한 name만 응답
@app.route('/teachers/by_name', methods=['GET'])
def get_teacher_by_name(teacher_name):
    teacher = next((teacher for teacher in teachers if teacher['name'] == teacher_name), None)
    return get_teacher_response(teacher)

# 동일한 class만 응답
@app.route('/teachers/by_class', methods=['GET'])
def get_teacher_by_class(teacher_class):
    teacher = next((teacher for teacher in teachers if teacher['class'] == teacher_class), None)
    return get_teacher_response(teacher)

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

 

http://localhost:5000/teachers

 

http://localhost:5000/teachers/2
http://localhost:5000/teachers/by_name/Jack%20Black
http://localhost:5000/teachers/by_class/English

반응형