使用Flask框架从Python中的Pokemon API获取请求

2024-06-09 06:50:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个API,它从https://pokeapi.co/获取名称和描述信息,并用这个https://funtranslations.com/api/shakespeare转换描述

当前意图:当我请求http://127.0.0.1:5000/v1/pokemon时,我只是想让原来的151口袋妖怪在我的服务器上显示为JSON

问题:TypeError: 'module' object is not callable

代码:

from flask import Flask
from flask_restful import Resource, Api
import requests, jsonify, json

app = Flask(__name__)
api = Api(app)

class Pokemon(Resource):
    def get(self, name, description):
        return info[name, description]

@app.route('/v1/pokemon/')
def orig_names():
  r = requests.get(
      'https://pokeapi.co/api/v2/pokemon?limit=151%27')
  return jsonify(r)

Tags: namefromhttpsimportapiappflaskpokeapi
2条回答

您正在使用模块jsonify并直接调用它(这不起作用,正如错误所说:模块不可调用)

使用flask模块中的jsonify函数

from flask import jsonify

长的

模块是包含代码(类、函数等)的Python文件的别致名称。import语句允许您导入模块(即,在运行时中包含来自模块的代码)。导入模块意味着您可以从模块内部执行函数和使用类。这并不意味着您可以调用模块本身

jsonify模块与您打算使用的jsonify函数完全不同:https://pypi.org/project/jsonify/

要使用的jsonify函数是Flask模块(from flask import jsonify)的一部分。 见https://flask.palletsprojects.com/en/1.1.x/api/#flask.json.jsonify

该函数返回一个Flask响应对象,由您决定要在响应中封装来自Pokemon api的哪些数据

from flask import Flask, jsonify
from flask_restful import Resource, Api
import requests

app = Flask(__name__)
api = Api(app)

class Pokemon(Resource):
    def get(self, name, description):
        return info[name, description]

@app.route('/v1/pokemon/')
def orig_names():
  r = requests.get(
      'https://pokeapi.co/api/v2/pokemon?limit=151%27')
  response_data = {} # up to you
  return jsonify(**response_data)

看起来您导入了jsonify模块并直接调用它

jsonify(r)

相关问题 更多 >