通过回调响应从 Flask 调用 api 服务

问题描述 投票:0回答:3

如何捕获调用 API 的响应,该 API 对特定回调 URL 做出响应以供客户端查看?

假设我正在向 Flask 中的某个后端 url 发送 ajax 帖子:

$.ajax({
   type: 'POST',
   url: 'api-req',
   data: {'d1': '{{ d1 }}', 'd2': d2},
   success: function(data) {
      console.log(data); //should do something else here
   }
});

到目前为止一切顺利,该 URL 正在向某些 API 服务发出请求:

@public.route('/api-req', methods=['GET', 'POST'])
def api_req():

    if request.method == 'POST':
        d1 = request.form['d1']
        d2 = request.form['d2']

        api_url = f'{base_url}/api'
        api_data = {"d1": d1, "d2": d2, "callbackUrl": "http://www.myurl.com/api-service/response"}

        r = requests.post(sign_url, json=sign_data)

    return r.text # should return something else

@public.route('/api-service/response', methods=['POST'])
    def api_resp():
        # do something here to capture and send to client which is waiting 
        pass

但现在我不知道如何捕获来自 API 服务的响应并将其发送到客户端前端以继续。

python ajax flask
3个回答
0
投票

您需要一些“中介”来在端点和支持等待数据准备就绪的回调 URL 处理程序之间交换数据,例如使用 RabbitMQ,您可以“订阅”具有某个 id 的消息,然后等待,除非回调将该消息放入队列


0
投票

我不确定我是否理解,但我认为您可以使用 websocket 连接您的客户端,该 websocket 将在特定调用完成时收到通知,然后响应 API 将发布到它


0
投票

https://language-tools.ec.europa.eu/assets/pages/05_example_python.html

通过来自服务器的回调异步响应检查来自 EU 的此解决方案。 涉及到一个中间路线:

@app.route('/checkResult', methods=['POST'])

... https://language-tools.ec.europa.eu

© www.soinside.com 2019 - 2024. All rights reserved.