如何使用flask_restplus显示架构示例?

时间:2018-02-09 16:51:16

标签: python rest flask schema swagger

[使用Python,Flask,flask_restplus,Swagger]

我尝试使用schema model在下方显示flask_restplus。 yml中的原型模式而不是python:

enter image description here

我创建了schema_model,但我不确定如何将其输入到代码中,以便它与GET调用配对。如何显示schema_model?

import requests
from flask import Flask, request, json, jsonify, Blueprint
from flask_restplus import Resource, Api, reqparse, fields, SchemaModel

app = Flask(__name__)
api = Api(app, title='Function Test', doc='/FT')

rbt = api.namespace('RBT', description='Accessible by API')

address = api.schema_model('Address', {
    'properties': {
        'road': {
            'type': 'string'
        },
    },
    'type': 'object'
})

@rbt.route('/<string:resource>/<string:responder>/<string:tag>')
class RBT(Resource):

    @rbt.doc(responses={
        200: 'Success',
        400: 'Validation Error',
        500: 'Internal Server Error'
    })

    #@rbt.marshal_with(address)
    def get(self, resource, responder, tag, **kwargs):
        '''TC#1 Definition'''
        url2 = 'http://' + host +  port + '/' + resource + '?' +responder
        print(url2)

        url = 'http://httpbin.org/get'

        parameters = {'resource': resource, 'responder':responder, 'tag': tag}
        r = requests.get(url)
        data = r.text

        return data

1 个答案:

答案 0 :(得分:0)

关于在烧瓶中进行序列化(也称为封送处理)和反序列化的一般概念的几点评论, rest_plus

  • 要进行输出(序列化),请使用@api.marshall_with(some_serializer)-这将用于在GET中显示返回的对象,如果返回的对象在POST中显示,则将显示已创建的对象,或者其他方法。
  • 用于输入(反序列化)用户@api.expect(some_deserializer, validate=True)-这将用于将传入的JSON转换为python对象并进行数据形状正确性的验证。

关于基于JSON模式的序列化器-可悲的是,简单的答案是:

api.schema_model()(基于JSON模式的de / serializer)的功能无法正常工作,请参见rest_plus,请参见github问题: