4

[使用 Python、Flask、flask_restplus、Swagger]

我正在尝试schema model使用flask_restplus. yml 而非 python 中的原型模式:

在此处输入图像描述

我创建了,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
4

1 回答 1

0

关于烧瓶rest_plus中序列化(又名编组)和反序列化的一般概念的一些评论:

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

关于基于 JSON 模式的序列化器 - 可悲但直截了当的答案是:

api.schema_model()(JSON schema-based de/serializer)的功能在看到 github 问题时不能正常工作:rest_plus

于 2020-05-29T08:21:36.987 回答