簡體   English   中英

Python Flask:未發生API調用,導致500個內部服務器錯誤

[英]Python Flask: API call not happening, resulting in 500 internal server error

我對Python Flask相當flask_restplus ,請使用flask_restplus建立一個簡單的項目來進行基本的API調用。 我可以在龐大的頁面中看到我的API,但這會導致500個內部服務器錯誤

run.py:

import os

from flask_script import Manager
from app.main import create_app

from app.app import blueprint

app = create_app(os.getenv('BOILERPLATE_ENV') or 'dev')
app.register_blueprint(blueprint)

app.app_context().push()

manager = Manager(app)


@manager.command
def run():
    app.run(threaded=True)


if __name__ == '__main__':
    manager.run()

app.py:

from flask_restplus import Api
from flask import Blueprint
from .main.controller.hello_controller import api as hello

blueprint = Blueprint('api', __name__)

api = Api(blueprint,
          title='My RESTful API',
          version='1.0',
          description='My flask restplus web service'
          )

api.add_namespace(hello, path='/hello')

hello_controller.py:

import json
from flask import request
from flask_restful import Resource

api = Namespace('hello', description='hello world')

@api.route('/', methods=['GET'])
class Hello(Resource):
    @api.param('name1', 'Name1')
    @api.param('name2', 'Name2')
    @api.response(200, 'hello said successfully')
    @api.doc('Hello Names')
    def get(self, name1, name2):
        """ Get Hello names """
        return json.dump("Hello" + name1 + "and Hello" + name2), 200

也嘗試過這兩種返回類型,但是沒有運氣。

return json.dumps({'data': "Hello" + name1 + "and Hello" + name2, 'success': 200})

return Response(json.dumps("Hello" + name1 + "and Hello" + name2), mimetype='application/json')

當我嘗試從swagger UI執行上述API調用時,會導致500 Internal server error 首先,它甚至沒有達到我的API路由/方法。 這是來自控制台的錯誤:

    ERROR:flask.app:Exception on /hello/ [GET]
Traceback (most recent call last):
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/app.py", line 1832, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/app.py", line 1818, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask_restplus/api.py", line 325, in wrapper
    resp = resource(*args, **kwargs)
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/views.py", line 87, in view
    self = view.view_class(*class_args, **class_kwargs)
TypeError: object() takes no parameters
INFO:werkwal:127.0.0.1 - - [24/Jun/2019 21:43:27] "GET /hello/ HTTP/1.1" 500 -

如果我嘗試使用以下路由: @api.route('/<name1>/<name2>', methods=['GET'])並從頭開始執行,則永久加載並且什么也沒有發生。仍然錯誤是相同的:

    ERROR:flask.app:Exception on /hello/ [GET]
Traceback (most recent call last):
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/app.py", line 1832, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/app.py", line 1818, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask_restplus/api.py", line 325, in wrapper
    resp = resource(*args, **kwargs)
  File "/Users/myuser/PycharmProjects/myDev/venv/lib/python3.6/site-packages/flask/views.py", line 87, in view
    self = view.view_class(*class_args, **class_kwargs)
TypeError: object() takes no parameters
    INFO:werkwla:127.0.0.1 - - [24/Jun/2019 21:19:29] "GET /hello/?name1=mike&name2=sam HTTP/1.1" 500 -

任何幫助表示贊賞!

更新:您導入flask_restfulflask_restplushello_controller 這個示例有一些錯誤(我認為是從復制到SO)。 因此,很難說出什么是真正的錯誤或復制錯誤。 如果沒有一個干凈的例子,那是我能做到的最好的,對不起! 請參閱此處以獲取使用藍圖的示例https://flask-restplus.readthedocs.io/en/stable/scaling.html#use-with-blueprints

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM