[英]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_restful
不flask_restplus
在hello_controller
。 這個示例有一些錯誤(我認為是從復制到SO)。 因此,很難說出什么是真正的錯誤或復制錯誤。 如果沒有一個干凈的例子,那是我能做到的最好的,對不起! 請參閱此處以獲取使用藍圖的示例https://flask-restplus.readthedocs.io/en/stable/scaling.html#use-with-blueprints
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.