gpt4 book ai didi

python - 向我的 RESTful API(Python-Flask) 发送 POST 请求,但收到 GET 请求

转载 作者:太空宇宙 更新时间:2023-11-03 12:36:36 25 4
gpt4 key购买 nike

我正在尝试以包含 JSON 的 POST 请求的形式向 Zapier webhook 发送触发器。如果我只是通过本地 python 脚本发送 POST 请求,它就可以正常工作。

我想做的是创建一个 RESTful API,它在调用 create-row-in-gs 端点时触发 Zapier webhook。

如您所见,我正在向 Hasura 集群发送 POST 请求 API 调用。但是我得到的不是“200 OK SUCCESS”的响应,而是“200 OK 失败”,这意味着该请求被视为 GET 请求而不是 POST 请求。

测试.py

#Python 3 Script to send a POST request containing JSON

import json
import requests

api_url = 'http://app.catercorner16.hasura-app.io/create-row-in-gs'
create_row_data = {'id': '1235','name':'Joel','created-on':'27/01/2018','modified-on':'27/01/2018','desc':'This is Joel!!'}
r = requests.post(url=api_url, data=create_row_data)
print(r.status_code, r.reason, r.text)

server.py(运行在Hasura集群上)

from src import app
from flask import jsonify,request,make_response,url_for,redirect
from json import dumps
from requests import post

url = 'https://hooks.zapier.com/hooks/catch/xxxxx/yyyyy/'

@app.route('/create-row-in-gs', methods=['GET','POST'])
def create_row_in_gs():
if request.method == 'GET':
return make_response('failure')
if request.method == 'POST':
t_id = request.json['id']
t_name = request.json['name']
created_on = request.json['created_on']
modified_on = request.json['modified_on']
desc = request.json['desc']

create_row_data = {'id': str(t_id),'name':str(t_name),'created-on':str(created_on),'modified-on':str(modified_on),'desc':str(desc)}

response = requests.post(
url, data=json.dumps(create_row_data),
headers={'Content-Type': 'application/json'}
)
return response

几周来一直在努力解决这个问题。我究竟做错了什么?非常感谢任何帮助。

最佳答案

好的,我在本地检查了您的脚本,发现了两个问题。两者都在您的客户端脚本中。

1) r = requests.post(url=api_url, data=create_row_data) 应该是 r = requests.post(url=api_url, json=create_row_data)

2) 您在您的 Flask 应用程序中查找 created_onmodified_on,但是您发送了 created-onmodified-on

下面的工作本地代码:

客户:

import json
import requests

api_url = 'http://localhost:5000/create-row-in-gs'
create_row_data = {'id': '1235','name':'Joel','created_on':'27/01/2018','modified_on':'27/01/2018','desc':'This is Joel!!'}
print(create_row_data)
r = requests.post(url=api_url, json=create_row_data)
print(r.status_code, r.reason, r.text)

服务器:

from flask import Flask,jsonify,request,make_response,url_for,redirect
import requests, json

app = Flask(__name__)

url = 'https://hooks.zapier.com/hooks/catch/xxxxx/yyyyy/'

@app.route('/create-row-in-gs', methods=['GET','POST'])
def create_row_in_gs():
if request.method == 'GET':
return make_response('failure')
if request.method == 'POST':
t_id = request.json['id']
t_name = request.json['name']
created_on = request.json['created_on']
modified_on = request.json['modified_on']
desc = request.json['desc']

create_row_data = {'id': str(t_id),'name':str(t_name),'created-on':str(created_on),'modified-on':str(modified_on),'desc':str(desc)}

response = requests.post(
url, data=json.dumps(create_row_data),
headers={'Content-Type': 'application/json'}
)
return response.content

if __name__ == '__main__':
app.run(host='localhost',debug=False, use_reloader=True)

关于python - 向我的 RESTful API(Python-Flask) 发送 POST 请求,但收到 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com