首页 > 解决方案 > AssertionError:未实现的方法 'GET' - API FLASK

问题描述

我正在尝试创建一个简单的 API 以使用表中的数据返回 JSON 中的 GET,其中数据库是 pgsql,但是当我执行 CURL 时出现错误 500

烧瓶.py

from flask import Flask, request, jsonify
from flask_restful import Resource, Api
from sqlalchemy import create_engine
from json import dumps
import psycopg2

db_connect = create_engine('postgresql+psycopg2://postgres:postgres@localhost/dbname')
app = Flask(__name__)
api = Api(app)

class ApiZabbix(Resource):
    def getMemory(self):
        try:
            conn = db_connect.connect()
            query = conn.execute("select * from \"TBLNAME\"")
            result = [dict(zip(tuple(query.keys()), i)) for i in query.cursor]
            return jsonify(result)
        except Exception as e:
            print("[ALERT] Error caused by: {}".format(e))

api.add_resource(ApiZabbix, '/apizb')

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

卷曲

curl localhost:5000/apizb

输出

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.7/dist-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.7/dist-packages/flask_restful/__init__.py", line 468, in wrapper
    resp = resource(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/flask_restful/__init__.py", line 573, in dispatch_request
    assert meth is not None, 'Unimplemented method %r' % request.method
AssertionError: Unimplemented method 'GET'

标签: pythonpostgresqlflaskflask-restful

解决方案


AssertionError:未实现的方法“GET”

这意味着你的ApiZabbix类需要一个get方法。因此,与其调用该方法,getMemory不如将其重命名为get

class ApiZabbix(Resource):
   def get(self):
       # Rest of code

推荐阅读