Flask 프레임워크를 이용하여 API 만들기
- GET → 통상적으로! 데이터 조회(Read)를 요청할 때
예) 영화 목록 조회
→ 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
→ 예: google.com?q=북극곰
- POST → 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때
예) 회원가입, 회원탈퇴, 비밀번호 수정
→ 데이터 전달 : 바로 보이지 않는 HTML body에 key:value 형태로 전달
요청 정보 : URL= /mars, 요청 방식 = POST
클라(ajax) → 서버(flask) : name, address, size
function save_order() {
let name = $('#name').val()
let address = $('#address').val()
let size = $('#size').val()
$.ajax({
type: 'POST',
url: '/mars',
data: { name_give:name, address_give:address, size_give:size },
success: function (response) {
alert(response['msg'])
window.location.reload()
}
});
서버(flask) → 클라(ajax) : 메시지를 보냄 (주문 완료!)
@app.route("/mars", methods=["POST"])
def mars_post():
name_receive = request.form['name_give']
address_receive = request.form['address_give']
size_receive = request.form['size_give']
doc = {
'name': name_receive,
'address': address_receive,
'size': size_receive
}
db.orders.insert_one(doc)
return jsonify({'msg': '주문 완료!'})
요청 정보 : URL= /mars, 요청 방식 = GET
클라(ajax) → 서버(flask) : (없음)
받을 것 없이 orders 에 주문정보를 담아서 내려주기만 하면 된다.
@app.route("/mars", methods=["GET"])
def mars_get():
orders_list = list(db.orders.find({},{'_id':False}))
return jsonify({'orders':orders_list})
서버(flask) → 클라(ajax) : 전체 주문을 보내주기
응답을 잘 받아서 for 문으로! 붙여주면 끝
function show_order() {
$('#order-box').empty()
$.ajax({
type: 'GET',
url: '/mars',
data: {},
success: function (response) {
let rows = response['orders']
for (let i = 0; i < rows.length; i++) {
let name = rows[i]['name']
let address = rows[i]['address']
let size = rows[i]['size']
let temp_html = `<tr>
<td>${name}</td>
<td>${address}</td>
<td>${size}</td>
</tr>`
$('#order-box').append(temp_html)
}
}
});
}
초기세팅하다가 생긴 에러 중 ec2 로 구매한 가상의 컴퓨터(서버)의 ip 로 연결된 내 도메인 주소로 들어가면 내가 만든 사이트가 접속되어야하는 데 페이지를 찾을 수 없다고 연결에러가 나서 해결해보았다
해결!
완료버튼을 누르면 선이 그어지면서 완료버튼이 사라져야하는데..
전혀 작동이 안되어 고민…코드..코드를 보자…증맬 어이없는 실수가 군데군데 보인다…
@app.route("/bucket/done", methods=["POST"])
def bucket_done():
num_receive = request.form['num_give']
db.bucket.update_one({'num': num_receive}, {'$set': {'done': 1}})
return jsonify({'msg': '버킷 완료!'})
// > 수정 후
@app.route("/bucket/done", methods=["POST"])
def bucket_done():
num_receive = request.form["num_give"]
db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
return jsonify({'msg': '버킷 완료!'})
function done_bucket(num) {
$.ajax({
type: "POST",
url: "/bucket/done",
data: { num_give: num },
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
// > 수정 후
function done_bucket(num) {
$.ajax({
type: "POST",
url: "/bucket/done",
data: {'num_give': num},
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
해결!

코드만 봐서 어떻게 작동 되는지 아직은 잘 모르겠다. 흐름을 보면서 이해하려고 해봐야겠다.
기술매니저님이 말한 손으로 그려보면서 공부해야 겠다.