기본 콘텐츠로 건너뛰기

밑바닥부터 만드는 웹 서비스 -2 flask를 이용해 rest api 서버 구축

밑바닥부터 만드는 웹 서비스 -2 flask를 이용해 rest api 서버 구축

개요

우선 기본적인 flask 를 통해 rest api 의 get, post, put, delete 를 구현하고 사용자 요청을 받는 방법과 요청을 받아 DB에 접근해서 데이터를 가져오는 것까지 해보자

세팅

backend/app.py

from flask import Flask

from flask_cors import CORS

from flask_restplus import Resource, Api, reqparse

app = Flask(__name__)

CORS(app)

title = 'my homepage'

api = Api(app=app)

class HealthCheck(Resource):

def get(self):

'''

사용자가 보낸 parameter를 통해

데이터를 보내줍니다.

:return:

'''

return {'msg': 'get ok'}

def post(self):

'''

사용자가 보낸 session 정보를 통해

수정 역할을 합니다.

:return: 수정 여부를 반환합니다.

'''

return {'msg': 'post ok'}

def put(self):

'''

사용자가 보낸 데이터를 저장한다.

:return:

'''

return {'msg': 'put ok'}

def delete(self):

'''

데이터를 삭제한다.

:return:

'''

return {'msg': 'delete ok'}

api.add_resource(HealthCheck, '/v0.0/test')

if __name__ == '__main__':

app.run(debug=True, port=5002)

실행 해보면

예시 하나로 get 을 실행해보면 (Mac 과 Windows 조금 달라요)

response body를 보면 우리가 설정한 return 값이 나오는 걸 알 수 있습니다.

위의 curl 이 요청을 보낸 명령어로 이를 터미널에서 하면 같이 받을 수 있는 걸 볼 수 있습니다. 혹은 Postman 같은 프로그램을 통해 확인할 수 있습니다.

그래도 시각적으로 처리하는 게 처리하기 쉬우니까 저는 flask 의 swagger를 쓰겠습니다.

각 기능들 기본 틀 만들기

공식 레퍼런스 참고 : http://flask-restful.readthedocs.io/en/0.3.5/quickstart.html

블로그 참고 : https://medium.com/@feedbots/python-flask-%EB%A1%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-rest-api-%EC%9E%91%EC%84%B1%ED%95%98%EA%B8%B0-60a29a9ebd8c

우선 db 에서 데이터를 가져오기 전에 클래스 내에 object를 만들고 다뤄봅시다.

클래스 안에 하나 만들었습니다.

class HealthCheck(Resource):

# 이 데이터를 수정하면서 해봅시다.

test_object = {

'_id_inspire12' : {

'user_id' : 'inspire12' ,

'user_name' : 'flask_user' ,

'board' :

[{

'content_id' : 1 ,

'title' : 'hi'

},

{

'content_id' : 2 ,

'title' : 'hi'

}]

}

}

Get

: header 의 url 을 파싱해서 받는 부분이 필요합니다. reqpase 객체를 활용합니다.

@api.doc ( '' )

@api.param ( 'user_id' , '' )

def get( self ):

'''

사용자가 보낸 parameter를 통해

데이터를 보내줍니다.

:return :

'''

# parameter 를 받습니다.

param_list = [ 'user_id' ]

parser = reqparse.RequestParser()

for param in param_list:

parser.add_argument(param)

query = parser.parse_args()

# 제대로 parameter를 받았는지 debug를 위해

print ( '_id_{}' .format(query[ 'user_id' ]))

# return 데이터를 받아놓습니다.

res = self .test_object.get( '_id_{}' .format(query[ 'user_id' ]))

# 데이터, 반응, 헤더 로 구성

return res, HTTPStatus.OK, {}

Post

: body 의 json 오브젝트를 받습니다.

@api.doc ( '' )

@api.param ( 'body' , '' , 'body' )

def post( self ):

'''

사용자가 보낸 session 정보를 통해

수정 역할을 합니다.

:return : 수정 여부를 반환합니다.

'''

data = request.get_json( silent = True , force = True )

# 데이터 확인

print (data)

return data

Post 의 경우 body 형식으로 전송해야하는데

flask swagger에서 전달이 안되네요..

그래서 postman 으로 확인했습니다..

put 의 경우 post 방식으로 하고

delete 의 경우 get 방식으로 하면 됩니다.

다음 포스팅에

post와 put, delete 를 db와 연결해서 구현해보겠습니다.

추가적으로

API관리와 로직 분리(의존성) 위해 코드를 정리하고 몽고 db를 통해 db 를 구성봅시다.

그 이후 angular 를 통해 프론트엔드 부분을 처리하겠습니다.

from http://inspire12.tistory.com/130 by ccl(A) rewrite - 2020-03-06 19:20:27

댓글

이 블로그의 인기 게시물

Flask 13. pythonanywhere에 배포하기

Flask 13. pythonanywhere에 배포하기 Login: PythonAnywhere It's always a pleasure to hear from you! Ask us a question, or tell us what you love or hate about PythonAnywhere. We'll get back to you over email ASAP. Sorry, there was an error connecting to the server. Please try again in a few moments... www.pythonanywhere.com from http://ohdowon064.tistory.com/124 by ccl(A) rewrite - 2020-03-11 15:54:10

Flask.py #1 설치해보자

Flask.py #1 설치해보자 Flask는 python의 프레임워크라고 할 수 있습니다. Flask를 설치해보자! # 리눅스 -- 접기 이러면 끝 - # pip install flask $ sudo -s 리눅스 같은 경우는 이미 파이썬이 설치가 되어 있을겁니다. # 리눅스 -- 접기 # 맥 -- 접기 이러면 끝 - $ sudo pip install flask 설치가 끝낫으면 Terminal.app 을 열어줍시다. 로 접속하여 파이썬을 설치해 줍니다. [ https://www.python.org/ ] # 맥 -- 접기 # 윈도우 -- 접기 [ https://www.python.org/ ] 로 접속하여 파이썬을 설치해 줍니다. 설치가 끝났으면 [ 고급설정 ] - [ 환경변수 ] - [ 시스템 변수 ] 에서 Path를 찾아줍니다. Path를 찾으셧다면 편집을 누르고 파이썬의 설치 경로와 파이썬 폴더 내의 Script 폴더를 입력해 줍시다. 환경변수까지 끝나셧다면 cmd 창을 키시고 pip install flask 이러면 flask 설치가 끝나게 됩니당 from http://chocoweb.tistory.com/14 by ccl(A) rewrite - 2020-03-07 13:54:54