【问题标题】:calling an api service from flask with a callback response使用回调响应从烧瓶调用 api 服务
【发布时间】:2021-09-08 18:03:10
【问题描述】:

如何通过调用 API 来捕获对特定回调 URL 的响应以供客户端查看?

假设我正在向烧瓶中的某个后端 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


    【解决方案1】:

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

    【讨论】:

    • 这样的按摩队列是不是有点矫枉过正?
    • 在我看来只是通过 3 个 http 请求链处理用户请求
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2018-01-22
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多