如何运行3个依赖于彼此的API调用?

时间:2018-03-20 11:27:13

标签: php amazon-mws

您好我正在考虑建立一个网页,使用MWS API从亚马逊卖家中心下载报告。我遇到的问题是下载一份报告需要3个不同的电话!

请求报告并获取其ID->检查状态/获取报告ID - >下载报告。

目前我运行3个单独的按钮需要按顺序点击,我将如何进行第二次api调用等待第一个按钮返回特定值等等。

http://docs.developer.amazonservices.com/en_UK/reports/index.html

3 个答案:

答案 0 :(得分:1)

由于您说您是从网页上执行此操作,因此我认为您选择的语言是JavaScript。以下是进行调用以及链接其他调用的JavaScript示例。根据您使用的库/框架,您可以利用promises,observables或回调。

承诺(不要忘记检查错误,我不会检查我的示例):

http.get(reportUrl).then(reportResponse => {
    http.get(checkStatusUrl + reportResponse.id).then(statusResponse => {
        http.get(finalUrl + statusResponse.id).then(finalResponse => {
            console.log(finalResponse);
        })
    })
})

<强>观测量

http.get(reportUrl).subscribe(reportResponse => {
    http.get(checkStatusUrl + reportResponse.id).subscribe(statusResponse => {
        http.get(finalUrl + statusResponse.id).subscribe(finalResponse => {
            console.log(finalResponse);
        })
    })
})

<强>回调

http.get(reportUrl, reportResponse => {
    http.get(checkStatusUrl + reportResponse.id, statusResponse => {
        http.get(finalUrl + statusResponse.id, finalResponse => {
            console.log(finalResponse);
        })
    })
})

如果您使用的是服务器端语言,那么您的API应该或多或少相同。发出第一个请求,等待其响应。使用响应发出第二个请求,依此类推。

答案 1 :(得分:0)

您基本上有两个选择:

  1. 有一个长期运行的PHP进程,可以一次完成所有操作。您可能需要将()数据刷新()数据到客户端,以便它不会挂起。
  2. 让不同的PHP脚本完成这三个部分(您可能希望将第2步和第3步结合起来)并在&#34;轮询循环中通过JavaScript调用它们。#/ li>

    由于MWS报告有时需要很长时间(有时> 1小时),您可能不得不更改PHP设置以允许这样一个长时间运行的脚本。我亲自采用方法2。

答案 2 :(得分:0)

如果你进行ajax调用,

  • 您可以设置async: false
  • 您可以将下一个ajax调用设置为回调
  • 您可以在通话成功功能中调用下一个ajax呼叫