Luis Henrique
Luis Henrique

Reputation: 771

AssertionError: Unimplemented method 'GET' - API FLASK

I'm trying to create a simple API to return a GET in JSON with the data from the table, where the database is a pgsql, however when I do a CURL I get error 500

flask.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

curl localhost:5000/apizb

Output

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'

Upvotes: 2

Views: 4211

Answers (1)

v25
v25

Reputation: 7621

AssertionError: Unimplemented method 'GET'

This means your ApiZabbix class needs a get method. So instead of calling that method getMemory rename it to get:

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

Upvotes: 4

Related Questions