Flask를 사용하여 온라인 강좌 신청 API를 만들어보겠습니다. 해당 과목에 대한 강좌 신청 정보를 처리할 수 있도록 해봅시다.
Flask API 코드
import json
from flask import Flask, request
app = Flask(__name__)
def validate_application(application):
# 강좌 신청 정보에 대한 유효성 검사를 수행하는 함수
if 'name' not in application:
return False
if 'email' not in application:
return False
if 'course' not in application:
return False
return True
@app.route('/korean', methods=['POST'])
def korean():
# 한국사 강좌 신청 정보 처리 코드 작성
data = json.load(open('korean.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('korean.json', 'w') as f:
json.dump(data, f, indent=4)
return '한국사 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
@app.route('/toeic', methods=['POST'])
def toeic():
# 토익 강좌 신청 정보 처리 코드 작성
data = json.load(open('toeic.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('toeic.json', 'w') as f:
json.dump(data, f, indent=4)
return '토익 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
@app.route('/toefl', methods=['POST'])
def toefl():
# 토플 강좌 신청 정보 처리 코드 작성
data = json.load(open('toefl.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('toefl.json', 'w') as f:
json.dump(data, f, indent=4)
return '토플 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
@app.route('/math', methods=['POST'])
def math():
# 수학 강좌 신청 정보 처리 코드 작성
data = json.load(open('math.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('math.json', 'w') as f:
json.dump(data, f, indent=4)
return '수학 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
if __name__ == '__main__':
app.run(debug=True)
설명
import json
from flask import Flask, request
먼저 flask와 json를 import 합니다.
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False # 한국어 지원을 위한 설정
현재 모듈의 이름을 사용하여 Flask 애플리케이션 객체를 생성합니다.
'JSON_AS_ASCII'를False로 하여 한국어 출력을 위한 설정을 합니다.
def validate_application(application):
# 강좌 신청 정보에 대한 유효성 검사를 수행하는 함수
if 'name' not in application:
return False
if 'email' not in application:
return False
if 'course' not in application:
return False
return True
validate_application(application) 함수는 강좌 신청 정보에 대한 유효성을 검사하는 함수입니다. 매개변수로 강좌 신청 정보를 받고, 해당 정보에 'name', 'email', 'course' 항목이 있는지 확인하여 유효성을 검사합니다.
@app.route('/korean', methods=['POST'])
def korean():
# 한국사 강좌 신청 정보 처리 코드 작성
@app.route 데코레이터를 사용하여 URL 경로를 설정하고, methods 매개변수를 사용하여 POST 요청을 처리합니다. 위 코드를 시작으로 한국사 강좌 신청 정보 처리를 위한 코드입니다.
try:
with open('korean.json') as f:
data = json.load(f)
except json.decoder.JSONDecodeError:
data = []
JSON 파일인 'korean.json'을 열어서 데이터를 로드하고, 데이터가 있다면 읽고 없다면 빈상태로 둡니다.
이때, 파이썬 파일과 같은 폴더에 'korean.json'이 있어야 합니다. 메모장을 켜서 좌측 이름으로 저장하면 됩니다.
application = request.json
요청 JSON 데이터를 application에 받아옵니다.
if validate_application(application):
data.append(application)
with open('korean.json', 'w') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
return '한국사 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
validate_application() 함수를 사용하여 유효성을 검사하고, ① 유효한 경우 데이터에 추가하고 파일에 저장한 뒤 성공 메시지를 반환합니다.
② 유효하지 않은 데이터일 경우, 강좌 신청 정보가 올바르지 않다는 오류 메시지를 반환합니다.
같은 방식으로 토익, 토플, 수학 강좌를 만들어 보겠습니다.
토익
@app.route('/toeic', methods=['POST'])
def toeic():
# 토익 강좌 신청 정보 처리 코드 작성
data = json.load(open('toeic.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('toeic.json', 'w') as f:
json.dump(data, f, indent=4)
return '토익 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
토플
@app.route('/toefl', methods=['POST'])
def toefl():
# 토플 강좌 신청 정보 처리 코드 작성
data = json.load(open('toefl.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('toefl.json', 'w') as f:
json.dump(data, f, indent=4)
return '토플 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
수학
@app.route('/math', methods=['POST'])
def math():
# 수학 강좌 신청 정보 처리 코드 작성
data = json.load(open('math.json'))
application = request.json
if validate_application(application):
data.append(application)
with open('math.json', 'w') as f:
json.dump(data, f, indent=4)
return '수학 강좌 신청이 완료되었습니다.'
else:
return '강좌 신청 정보가 올바르지 않습니다.'
if __name__ == '__main__':
app.run(debug=True)
마지막으로 Flask API를 run 시켜줍니다.
코드를 실행하면 Flask 서버가 실행되며, 디버그 모드로 동작합니다.
연관 포스터
간단한 테스트를 위해 아래 게시물의 예제를 통해 테스트 하면 됩니다.
[Python] Requests로 JSON POST 요청 예제
파이썬에서 Requests 라이브러리로 JSON 데이터를 POST 요청을 보내기 위한 코드입니다. API 서버 명세서*를 통해 request body에 필요한 정보를 JSON 형태로 만들고, POST 방식으로 API 서버를 호출할 수 있
treasurer.tistory.com
[Python] API 명세서 작성가이드 예제
아래 포스터에서 만든 온라인 강좌 신청 API 기반, API 명세서 작성 가이드라인 예시입니다. [Python] Flask기반 REST API 간단 구현 예제 [Python] Flask기반 REST API 간단 구현 예제 Flask를 사용하여 온라인
treasurer.tistory.com
'코딩 > 파이썬' 카테고리의 다른 글
[Python] API 명세서 작성가이드 예제 (0) | 2023.06.06 |
---|---|
[Python] Requests로 JSON POST 요청 예제 (0) | 2023.06.01 |