Flask-API 만들기

BBOrong_22·2022년 4월 19일

스파르타 원정

목록 보기
41/52

코드스닛펫에서 만둘어둔 예제코드를 가져온다.
JQuery import를 써뒀다.

📢 API란

은행이 고객을 받기 위해서 만들어 놓은 창구처럼
서버도 클라이언트 요청을 받기 위해서 만들어놓는 창구이다.
은행도 창구에 어떤 규칙이 있다.
민증 지참,입금을 하려면 입출금 창구로 가세요 등
마찬가지로,이 API도 규칙이 있다.그리고 그에 해당하는 주소가 존재한다.
그거를 하나하나 직접 만들어 보겠다.

API에서 우리가 배울 종류는 두가지이다.

GET은 통상적으로 데이터 조회를 요청할 때 쓴다.

예를 들면,데이터를 내가 건들지 않고 예를 들면 어제 들어온 주문목록 갖고 올때

POST는 통상적으로 데이터를 바꿀 때

예를 들면,회원가입 할 때

하나씩 만들고 요청해보도록 하자.

서버에 뭔가를 요청할 때ajax콜을 이용한다.
API만들기👉클라이언트에서 Ajax로 콜 해보기

👩‍💼GET 요청 (창구에서 받을 준비)

코드스니펫 GET 요청 API코드 복사해서
app.py파일

@app.route('/')
def home():
   return render_template('index.html')

이 코드 아래에 붙여 넣는다.

@app.route('/test', methods=['GET'])
def test_get():
   title_receive = **request**.args.get('title_give')
   print(title_receive)
   return **jsonify**({'result':'success', 'msg': '이 요청은 GET!'})

그리고 기본코드에 request,jsonify를 더 추가 시켜준다.

from flask import Flask, render_template,request,jsonify
app = Flask(__name__)   

🙋‍♂️GET 요청 확인 (고객에서 확인)

이제 확인을 할것인데,GET 요청 Ajax코드를
(아까 서버에서 받은 html이 담긴)브라우저에가서 console창에 붙여넣는다.
(⭐어떻게보면 클라이언트 사이드다.)

$.ajax({
    type: "GET",
    url: "/test?title_give=봄날은간다",
    data: {},
    success: function(response){
       console.log(response)
    }
  })

{msg: '이 요청은 GET!', result: 'success'}
이렇게 나오는데 console.log 때문에 msg로 적어둔게 찍혔다.
response는 서버에서 내려주는 값이다.

서버에 가서 보면

def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

이렇게 되어있는데'result':'success', 'msg': '이 요청은 GET!'
이 내용물을 response에 담아와서 찍힌 것이다.

app.py는 내가 만들어둔 창구이다.

🙋‍♀️이제 고객에서 벌어지는 일


type은 GET이고 url은 /test

url: "/test?title_give=봄날은간다",
GET요청은 물음표로 데이터를 들고 간다.
👉title_give라는 이름으로 봄날은간다 라는값을 가져왔다.

👨‍💼창구에서 벌어지는 일

title_receive = request.args.get('title_give')
title_give로 갖고온 값을 가져와봐라는 뜻이다.
title_receive = '봄날은 간다' 라고 가져온다면
title_receive안에 들어올것이다.
print(title_receive)
그리고 그 변수가 프린트 된다.
그리고 그 프린트는

여기에 찍힌다.
그리고 나서
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
값을 내려준다.

🙋‍(고객)Ajax로 콜을 하면
👉Ajax로 가져온
👉👨‍💼API(창구)에서 response(처리)를한다.
👉🙋‍고객이 response를 console.log로 확인을 한다.

👨‍💼POST 요청 (창구에서 확인)

코드스니펫 POST요청 API코드를 GET 요청 API코드 아래에 붙여넣는다.
GET과 마찬가지의 과정으로 진행된다.

❔❔값을 담아오는 이름을 바꾸면 어떻게 됄까❔❔

그런데,console창에서 data: { title_give2:'봄날은간다' },
로 바꾸면 어떻게 됄까.
(INTERNAL SERVER ERROR) 서버쪽에서 에러가 났다는 뜻이다.
그러면 app.py에서 에러를 확인해보자.
werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
KeyError: 'title_give'
분명 title_give로 값으로 뭔가를 찾으려고 했는데 title_give가 없다.
은행으로 따지면 주민등록번호가 없어요 라는 에러하고 똑같은 뜻이다.
그래서 둘의 이름을 꼭 맞춰줘야한다.

profile
아 스파르타 복습해야한다..

0개의 댓글