4주차에는 파이썬 라이브러리를 사용하여 데이터를 요청하고 DB와 연동되는 API 서버를 만들어보았다.
API(Application Programming Interface)
- 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- HTTP request method(요청 메소드)를 통해, 어떤 요청 종류인지 응답하는 서버 쪽에 정보 전달
Flask
python으로 API 서버를 구축할 수 있는 프레임워크
Flask 서버를 만들 경우 반드시 주의해야할 점 중 하나는 html 파일을 넣어둘 templates 폴더를 만드는 것이다.
그래야 flask 내장 함수인 render_template 함수를 이용하여 html을 가져올 수 있기 때문이다.
GET 요청
데이터 조회(Read)를 요청
GET 요청 fetch 코드는 다음과 같다.
fetch("/test").then(res => res.json()).then(data => {
console.log(data)
})
fetch 함수의 인자로 URL만 넣을 경우 GET 방식이 되고 해당 경로로 연결된 서버로부터 받아온 리턴값을 data로 가져온다.
서버에서는 다음과 같이 경로와 요청 방식을 포함하는 API 코드를 통해 클라이언트와 통신한다.
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give')
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
POST 요청
데이터 생성(Create), 변경(Update), 삭제(Delete) 요청
POST 요청 fetch 코드는 다음과 같다.
let formData = new FormData();
formData.append("title_give", "블랙팬서");
fetch("/test", { method: "POST", body: formData }).then(res => res.json()).then(data => {
console.log(data)
})
POST 요청의 경우 데이터를 조작하기 때문에 fetch 함수의 body 인자와 함께 데이터를 담아서 보낸다.
POST 요청 API 코드는 다음과 같다
@app.route('/test', methods=['POST'])
def test_post():
title_receive = request.form['title_give']
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
POST 요청과 GET 요청을 사용할 경우 POST 요청부터 작성하는 것이 좋은데, 데이터를 조회하려면 우선 데이터를 생성하거나 하는 과정이 우선적으로 필요하기 때문이다.
또한, 여기서 DB를 연동할 수 있는데 POST 요청 fetch를 통해 전달받은 데이터를 API를 통해 DB에 저장하고, GET 요청 API를 통해 DB에서 데이터를 꺼낸 다음, 클라이언트로부터 조회가 가능하도록 사용 가능하다.