[Python] Flask & flask-restplus && swagger ui

 

파이썬으로 Backend RESTful API 등을 작성할 때, 주로 Flask를 이용합니다.
 
참고:
 
위와 같은 정도로 플래스크 관련 블로깅을 했던 것 같습니다.
 
그동안 이렇게 작성한 백엔드 API를 테스트 하는데, 
curl을 이용한 쉘 스크립트로 작업을 해 왔었습니다.
 
예)
 
#!/bin/bash
source .config.sh
URL=${URL_BASE}/version
PARAM=
echo "version================================================================"
echo "GET ${URL}"
echo "  PARAM=${PARAM}"
echo "-----------------------------------------------------------------------"
$CURL -i ${URL}
echo
 
 
그런데 이번에 swagger ui 라는 것을 알게 되었습니다.
이미 npm 패키지로 유명한 것인데 간단히 웹으로 해당 API 스펙이 보이고 
직접 테스트해 볼 수 있게 되어있는 것인데 이제야 알게 되었네 ... 했답니다.
 
그러다가 구글에서 python swagger 로 검색을 해 보니, 
flask-restplus 라는 패키지도 발견하였습니다.
 
 a0105618_59df305aae293.png

 

워낙 플래스크에 붙는 모듈이 많아서 그냥 넘어갈까 하다가, 기존에 작업해 놓았던 RESTful API 에 
적용을 해 보려 살펴보았더니 이것이 보면 볼 수록 딱 원하는 기능들을 넣어 둔 것이었습니다.
 
기존에 작업해 놓았던 여러가지 작업을 더 줄일 수 있게 될 것 같습니다.
 
이것과 더불어 Swagger UI 도 간단히 설명해 봅니다.
 
 a0105618_59dffeff907ca.png

 

Api 를 flask_restplus 에 있는 것을 사용합니다. Flask의 Api 를 패러미터로 초기화하여 사용합니다.
 
 a0105618_59e0003439d48.png

 

HelloWorld 최소 코드 입니다.
 
우선 기존의 순수 Flask 에 비하여 틀린 점은,
 
 a0105618_59e0014aa5f2c.png

 

함수를 return 할 때 해당 dict를 jsonify를 시켜 리턴시켰는데 위의 경우는 그냥 dict를 리턴하면 알아서
jsonify 시키는 것으로 이해 됩니다.
 
 a0105618_59e0020702385.png

 

기존의 Flask Resource 클래스 이용 방법과 거의 동일합니다.
 
 a0105618_59e0025d3788a.png

 

실제 메서드 return 시 기본적인 것은 dict 결과를 return 해도 되고,
HTTP Response 코드를 추가하려면 dict, 201 과 같은 tuple을 리턴하고,
커스텀 HTTP Header를 추가하려면
dict, 201, custom_head_dict
와 같은 형식의 tuple로 리턴하면 됩니다. (콤마로 구분된 리턴은 결국 해당 tuple 입니다)
 
 a0105618_59e002fa2c5a6.png

 

플래스크 매뉴얼을 자세히 보지 못했지만 이런식으로 여러 route 도 가능하네요.
 
 a0105618_59e00378526ca.png

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

기존에는 GET, POST, PUT 등에 따라 request.args, request,json 등에서 패러미터를 구해 오고는 했는데,
위와같이 패러미터 검증 방법을 이용하면 아주 쓸모 있겠습니다.
 
 a0105618_59e0040acc2e3.png

 

MVC 모델링에서와 같은 모델링을 위한 방법과 marshal_with 등을 지원합니다.
로직과 모델을 분리해서 작업하면 더 좋을 것 같습니다.
 
 a0105618_59e0047eed855.png

 

위와 같은 것을 이용한 TODO 샘플의 예제 입니다.
 
 a0105618_59e00b7cd80b6.png

 

위와 같은 코드를 작성한 다음,
 
from flask import Flask
from flask_restplus import Api, Resource, fields
 
app = Flask(__name__)
api = Api(app, version='1.0', title='Sample API',
    description='A sample API',
)
 
@api.route('/my-resource/<id>')
@api.doc(params={'id': 'An ID'})
class MyResource(Resource):
    def get(self, id):
        return {}
 
    @api.response(403, 'Not Authorized')
    def post(self, id):
        api.abort(403)
 
 
if __name__ == '__main__':
    app.run(debug=True)
 
app.py로 저장합니다.
 
$ pip install flask-restplus
를 설치합니다. (Flask 등 필요한 것들이 모두 설치되는데 열개 정도 설치하는 것 같습니다)
 
$ python app.py
 
를 구동시키고,
 
http://localhost:500
에 브라우저로 접속하면,
 
 a0105618_59e00c396dee9.png

 

위와 같이 나옵니다.
 
 a0105618_59e00c7eaf0b9.png

 

namespace 가 default로 되어 있어 default 인것 같은데, default를 선택하면 위와 같이 해당 메서드가 보이고,
 
 a0105618_59e00c9c73fe4.png

 

상세 내용을 확인해 볼 수 있습니다.
 
restplus에서 좀 더 자세한 swagger ui 관련 내용을 보려면,
 
 
 
어느 분께는 도움이 되셨기를...

 

[출처] http://egloos.zum.com/mcchae/v/11276332

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
251 Data Structures and Algorithm In python 파이썬으로 자료구조와 알고리즘 : 출처 인터넷 file 졸리운_곰 2018.08.27 315
250 Mastering Basic Algorithms in the Python Language 이북 출처 인터넷 file 졸리운_곰 2018.08.27 381
249 텐서플로우-#1 자료형의 이해 file 졸리운_곰 2018.08.15 272
248 How to build a simple neural network in 9 lines of Python code file 졸리운_곰 2018.08.14 294
247 node.js python-shell을 활용하여 python 실행 file 졸리운_곰 2018.08.14 365
246 Python, PyV8로 javascript 실행하기 file 졸리운_곰 2018.08.14 221
245 파이썬 플라스크 프레임워크 소개 졸리운_곰 2018.08.03 130
244 주피터(jupyter notebook) 원격 접속 file 졸리운_곰 2018.07.10 142
243 Pycharm 원격 서버 연결하기 file 졸리운_곰 2018.07.10 249
242 The Ultimate Flask Front-End – Part 2 file 졸리운_곰 2018.06.22 85
241 The Ultimate Flask Front-End file 졸리운_곰 2018.06.22 139
240 Django + djangorestframework + django_rest_swagger 시작 file 졸리운_곰 2018.05.27 65
239 Does Python SciPy need BLAS? 졸리운_곰 2018.05.26 85
238 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 file 졸리운_곰 2018.05.22 192
237 Flask-RESTPlus에서 REST API와 Swagger 문서를 통합 file 졸리운_곰 2018.05.22 353
236 Building beautiful REST APIs using Flask, Swagger UI and Flask-RESTPlus file 졸리운_곰 2018.05.22 263
» [Python] Flask & flask-restplus && swagger ui file 졸리운_곰 2018.05.22 147
234 Django에서 MySQL DB를 연동하기 pycharm file 졸리운_곰 2018.04.10 427
233 Python Flask 로 간단한 REST API 작성하기 file 졸리운_곰 2018.04.07 226
232 Mining English and Korean text with Python file 졸리운_곰 2018.03.26 8121
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED