首页 > 编程问答 >从 post 请求发送的回调中提取数据

从 post 请求发送的回调中提取数据

时间:2024-07-24 07:40:55浏览次数:6  
标签:python json flask

当我的服务余额更新时,然后向我的服务器 http://.../callback 发送请求,其中包含屏幕截图中的数据,并且从这些数据中,我需要将 _id 和 SocialnetworkId 提取到变量中,以便进一步添加到机器人数据库和交互(data.from.socialNetworkId 和 data.from._id )

在此处输入图像描述

我尝试运行此代码并在站点上输出一个变量进行检查,但我收到错误代码 500,并且我不确定服务器是否能够处理数据

...
# Getting data from an incoming request
data = request.json

try:
        # Extracting the necessary parameters
        social_network_id = data['from']['socialNetworkId']
        user_id = data['from']['_id']
...
@app.route('/print')
def print():
    return (f"Social Network ID: {social_network_id}")


以下是使用 Flask 的示例,说明如何从回调 POST 请求中提取数据并将其存储在变量中:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/callback', methods=['POST'])
def callback():
    if request.method == 'POST':
        try:
            data = request.get_json() 
            social_network_id = data['from']['socialNetworkId']
            user_id = data['from']['_id']

            # 现在可以将 social_network_id 和 user_id 用于需要的任何用途,
            # 例如,将它们存储在数据库中或使用它们与的机器人进行交互。

            # 为响应,返回成功的状态
            return jsonify({'status': 'success'}), 200

        except (KeyError, TypeError) as e:
            # 处理数据中缺少键或数据类型不正确的情况
            return jsonify({'status': 'error', 'message': 'Invalid data format'}), 400

    else:
        # 如果请求方法不是 POST,则处理
        return jsonify({'status': 'error', 'message': 'Method not allowed'}), 405

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

说明:

  1. 导入必要的库:
  2. flask 用于创建 Web 应用程序。
  3. request 用于访问传入的请求数据。
  4. jsonify 用于将数据返回为 JSON 响应。

  5. 创建 Flask 应用程序。

  6. 定义回调路由:

  7. 使用 @app.route('/callback', methods=['POST']) 装饰器创建一个处理 /callback 路径的 POST 请求的路由。

  8. 获取 JSON 数据:

  9. request.get_json() 用于从请求中提取 JSON 数据并将其存储在 data 变量中。

  10. 提取数据:

  11. 使用 data['from']['socialNetworkId'] data['from']['_id'] data 字典中提取 social_network_id user_id 值。

  12. 错误处理:

  13. 使用 try...except 块来捕获可能发生的任何错误,例如缺少键 ( KeyError ) 或数据类型不正确 ( TypeError )。

  14. 返回响应:

  15. 如果提取成功,则返回一个带有成功状态的 JSON 响应 ( {'status': 'success'} )。
  16. 如果出现错误,则返回一个带有错误状态和消息的 JSON 响应,例如 {'status': 'error', 'message': 'Invalid data format'}

  17. 运行应用程序:

  18. app.run(debug=True) 启动 Flask 开发服务器,该服务器在开发过程中提供调试信息。

在的错误 500 问题上:

  • 错误 500 是一个通用的服务器端错误。需要检查服务器日志以获取有关错误原因的更多详细信息。
  • 确保的服务器正在运行并且配置为正确处理请求。
  • 检查代码中是否有任何语法错误或逻辑错误,尤其是在提取数据和处理变量的代码部分。

标签:python,json,flask
From: 78785940

相关文章

  • Python使用Visual Studio打印功能不显示输出
    任务:检查一个整数是正数还是负数。检查整数是否能被2整除。当输入0时,我需要退出循环并报告每个计数和总和。print函数没有显示任何输出。这是我从defmain()开始使用的代码defmain():countpositive=0countnegative=0count_divisible_by_2=0sump......
  • Python 中的像素最小二乘法
    我有一个非线性前向模型,它计算每个像素参数w的灰度图像。我还可以使用scipys优化函数来反转模型。我目前遇到的唯一问题是图像的大小使得这个解决方案非常慢...比如7%的像素在40分钟内计算得很慢。我使用for循环遍历所有像素并按像素应用模型。我尝试过......
  • SQL 命令在手动运行时工作正常(SQL Developer),但在 Python 的 oracledb 模块中给出 ORA-
    我正在使用OracleSQL数据库,并且我想运行该命令ALTERSESSIONSETNLS_DATE_FORMAT='YYYY-MM-DD';当我从SQLDeveloper应用程序手动运行它时,它工作正常。但是,当我使用oracledb模块从Python运行它时,出现以下错误:ErrorrunningSQLscript:ORA-00922:mi......
  • 在pip包中分发pythonnet dll类型信息
    我已经能够使用C#通过以下方式加载pythonnetdll:fromimportlib.resourcesimportpathimportsys#Assuming'my_package.lib'isthesub-packagecontainingtheDLLswithpath('pyrp.lib','')aslib_path:sys.path.append......
  • 尝试使用 pyinstaller 将 python 文件转换为可执行文件时出现 TypeError
    稍后的目的是通过命令行向GPT4all发送问题并将答案存储在文本文档中。我想将阻止代码转换为exe,但它产生了TypeError。这是到目前为止的代码:fromgpt4allimportGPT4Allmodel=GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf",device='cpu')#downloads/loads......
  • 使用 Python-PlexAPI 获取 plex 上所有好友的关注列表
    有关如何接收我的plex服务器上所有用户的监视列表的任何提示。我正在根据一些规则创建自动删除,其中一个规则是,如果电影位于用户观看列表中,则不应删除该电影。我遇到了麻烦,因为所有与观看列表相关的内容都在MyPlexAccount上。lexapi.myplex.MyPlexAccount具有我的用......
  • 如何在 Python 中查看与 Azure OpenAI 助手关联的所有上传文件?
    我正在使用Python对文档中的问题进行基准测试,并在jupyter笔记本中实例化了我的助手。我想确认助手是否有我上传的文件,但似乎找不到有关此功能将使用什么功能的文档。使用适用于AzureOpenAI的最新版本的PythonAPI。目前,无法使用AzureOpenAI的PythonAPI直接查看......
  • 如何在Python中计算小数?
    我正在创建一个计算器来用python计算企业的利润,但到目前为止我只能使用整数。这是我的代码示例:Gross=int(input("PleaseentertotalGrossRevenuefortheFiscalYear"))NetTaxes=int(Gross)*0.1所以我将会计年度的总收入乘以按“税率”计算,但我只能使用......
  • Flask API Pytest 单元测试由于 Pyodbc 失败
    我在使用Pytest时遇到一些问题。我的FlaskAPI使用pyodbc与MSSQL服务器数据库对话。该API在Docker容器中运行,我在Mac上运行它。我有一个健康检查(根级别即localhost:5000/)路由的单元测试,如下所示:fromappimportappdeftest_healthcheck(self):......
  • 如何使用 Python 打开 Google Firestore 上的特定数据库?
    我正在使用Firebase并使用以下代码从Firestore设置/检索文档:importfirebase_adminfromfirebase_adminimportcredentials,firestorecred=credentials.ApplicationDefault()firebase_admin.initialize_app(cred,options={"projectId":"huq-jimbo"})fires......