gpt4 book ai didi

node.js - 如何比较 : GET Data from 2 APIs,,POST bool

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:15 25 4
gpt4 key购买 nike

我正在开展一个项目,需要我:

  1. 从 API1 获取 ID,将 ID 插入数组,然后映射这些 ID,将它们用于第二个 GET 请求,其中 ID 用作 API2 GET 请求的参数,用 ID 填充数组,或用 N(表示“不存在”)填充数组 - 然后在以下位置调用该数组:

  2. POST 请求。这篇文章映射了 GET 请求返回的数组。如果该项目不是“N”,则它会 POSTS 到 API1,并检查:true。如果该项目是“N”,它会通过电子邮件告诉我们 API2 缺少该项目。

我希望这个系统每 2 小时自动执行一次 GET 和 POST,所以我使用 setInterval (不确定这是最好的主意)。编辑:Cron 作业将是一个更好的解决方案。

我正在使用 NodeJS、Express、Request-Promise、Async/Await。

这是迄今为止我的一些伪代码:

// Dependencies
const express = require('express');
const axios = require('axios');
const mailgun = require('mailgun-js')({ apiKey, domain });

// Static
const app = express();


app.get('/', (req, res, next) => {
// Replace setInterval with Cron job in deployment

// Get All Ids
const orders = await getGCloud();

// Check if IDs exist in other API
const validations = await getProjectManagementSystem(orders);

// If they exist, POST update to check, else, mailer
validations.map(id => {
if (id !== 'n') {
postGCloud(id);
} else {
mailer(id);
}
});
}

// Method gets all IDs
const getGCloud = async () => {
try {
let orders = [];
const response = await axios.get('gCloudURL');
for (let key in response) {
orders.push(response.key);
}
return orders;
} catch (error) {
console.log('Error: ', error);
}
}

// Method does a GET requst for each ID
const getProjectManagementSystem = async orders => {
try {
let idArr = [];
orders.map(id => {
let response = await axios.get(`projectManagementSystemURL/${id}`);
response === '404' ? idArr.push('n') : idArr.push(response)
})
return idArr;
} catch (error) {
console.log('Error: ', error);
}
}

const postGCloud = id => {
axios.post('/gcloudURL', {
id,
checked: true
})
.then(res => console.log(res))
.catch(err => console.log(err))
}

const mailer = id => {
const data = {
from: 'TESTER <test@test.com>',
to: 'customerSuppoer@test.com',
subject: `Missing Order: ${id}`,
text: `Our Project Management System is missing ${id}. Please contact client.`
}

mailgun.messages().send(data, (err, body) => {
if (err) {
console.log('Error: ', err)
} else {
console.log('Body: ', body);
}
});
}

app.listen(6000, () => console.log('LISTENING ON 6000'));

TL;DR:需要对 API 1 执行 GET 请求,然后向 API 2 执行另一个 GET 请求(使用 API 1 中的 ID 作为参数),然后将第二个 GET 中的数据发送到 POST 请求,然后更新 API 1 的数据或向客户支持发送电子邮件。这是一个自动系统,每两个小时运行一次。

主要问题:1. get req 中可以有 setInterval 吗?2. 可以让GET请求自动调用POST请求吗?3. 如果是这样,如何将 GET 请求数据传递到 POST 请求?

最佳答案

要使其同时适用于您的一次调用和一次调用,您必须执行 Ajax 调用以使用另一种方法获取后处理信息。

我希望这能起作用。

关于node.js - 如何比较 : GET Data from 2 APIs,,POST bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070659/

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