【问题标题】:flask python creating swagger document error烧瓶python创建招摇文档错误
【发布时间】:2020-07-19 18:10:51
【问题描述】:

我正在尝试为我在烧瓶中构建的 API 生成一个大张旗鼓的文档,但是当我执行下面的代码时,我得到了非常严重的错误,我在这里缺少什么?

这是我尝试过的:

try:
    from flask import Flask, g, request
    from flask_restful import Resource, Api
    from flask_limiter.util import get_remote_address
    from flask_limiter import Limiter
    from flasgger import Swagger
    from flasgger.utils import swag_from
    from flask_restful_swagger import swagger
    from flask_httpauth import HTTPTokenAuth
    import os
    import json
except Exception as e:
    print("some modules are missing {}".format(e))  

app = Flask(__name__)
api = Api(app)
limiter = Limiter(app, key_func=get_remote_address)
limiter.init_app(app)
api = swagger.docs(Api(app), apiVersion='0.1', api_spec_url='/doc')

auth = HTTPTokenAuth(scheme='Token')

tokens = {
    'awserftggyjkk34)ghtyrjrhhye34nnmw': 'cadmin',
    'bwsosjhee(dhj345gtyuioplsertbsjkl': 'dadmin',
    'mnchthas(sjklertyusvfgmbshdls234h': 'eadmin'

}
@auth.verify_token
def verify_token(token):
   if token in tokens:
       g.current_user = tokens[token]
       return True
   return False

class defr(Resource):

    decorators = [limiter.limit("100/day")]
    @swagger.model
    @swagger.operation(notes='my notes ntes')
    @auth.login_required
    def currentuser(self):
        return "Hello, %s!" % g.current_user


api.add_resource(defr, '/user')

错误:

  File "C:\Users\codamd\AppData\Local\Continuum\anaconda3\lib\site-packages\flask_restful_swagger\swagger.py", line 294, in extract_operations
    for method in [m.lower() for m in resource.methods]:

TypeError: 'NoneType' object is not iterable

任何帮助都会很棒

【问题讨论】:

    标签: python python-3.x flask swagger flask-restful


    【解决方案1】:

    这里的问题是您在defr 类中使用了自定义命名方法。 Flask-RESTful documentation 指定在 Resource 类中定义 HTTP 方法,例如

    class defr(Resource):
    
        decorators = [limiter.limit("100/day")]
        @swagger.model
        @swagger.operation(notes='my notes ntes')
        @auth.login_required
        def get(self):
            return "Hello, %s!" % g.current_user
    
    

    【讨论】:

    • 现在我在将 HTTP 方法更改为 get TypeError: super(type, obj): obj must be an instance or subtype of type 后出现以下错误
    • 当我运行你的代码并且我没有遇到任何这样的错误时,你能显示这个错误的完整堆栈跟踪吗..
    • 这是新的错误:AttributeError: 'Flask' object has no attribute 'cli'
    • 另外我如何在这里传递授权令牌?
    • 对于第一个错误,安装 clickflask-cli 可能是错误的,具体取决于您使用的 oi Flask 版本。查看 Flask 文档的 page
    猜你喜欢
    • 2020-11-23
    • 2023-03-11
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    相关资源
    最近更新 更多