티스토리 뷰

파이썬

Flask-RESTX Swagger 사용법

rlawldud335 2022. 1. 5. 17:55

1. API문서의 정보 입력

from flask_restx import Api

api = Api(
    version='0.1',
    title='my API server',
    description='나의 API 서버',
    terms_url='/',
    contact="asdf@naver.com"
)

2. 네임스페이스의 이름과 설명 입력

from flask_restx import Resource, Namespace, fields

ns = Namespace(
    name="namespace1",
    description="네임스페이스1"
)

3. 쿼리스트링 파라미터 입력

from flask_restx import reqparse, Resource
input = reqparse.RequestParser()
input.add_argument('abc', type=int, default=10, help='안녕!')
input.add_argument('ddd', type=str, default='asdfasdf', help='안녕!')

@ns.route('')
class Manager(Resource):
    @ns.expect(input)
    @ns.response(200, 'Success', output)
    @ns.response(500, 'Failed')
    def get(self):
        recipe_result = recipe()
        return recipe_result

4. url 파라미터 입력

@api.route('/my-resource/<id>', endpoint='my-resource')
@api.doc(params={'id': 'An ID'})
class MyResource(Resource):
    pass

5. post body 파라미터 입력

input = ns.model('input', {
    'image0': fields.String(description='asdfsdf', required=True, example="sdfsdf"),
    })
@ns.route('')
class Manager(Resource):
    @ns.expect(input)
    @ns.response(200, 'Success', output)
    @ns.response(500, 'Failed')
    def get(self):
        recipe_result = recipe()
        return recipe_result 

6. 리턴값 입력

output = ns.model('output', {
    'image0': fields.String(description='asdfsdf', required=True, example="sdfsdf"),
    })
@ns.route('')
class Manager(Resource):
    @ns.expect(input)
    @ns.response(200, 'Success', output)
    @ns.response(500, 'Failed')
    def get(self):
        recipe_result = recipe()
        return recipe_result 

7. api에 대한 설명 입력

@ns.route('')
class Manager(Resource):
    @ns.expect(input)
    @ns.response(200, 'Success', output)
    @ns.response(500, 'Failed')
    def post(self):
        """이 api에 대한 설명입니다."""
        return {"hello":"hello"}, 200

자세한 내용은 공식 문서를 참고하세요

https://flask-restx.readthedocs.io/en/latest/swagger.html

'파이썬' 카테고리의 다른 글

python은 call-by-value ? call-by-reference?  (0) 2022.01.07
패키지 설치 에러  (0) 2022.01.03
파이썬 인터프리터 환경설정  (0) 2021.12.30
최근에 달린 댓글
Total
Today
Yesterday
TAG more