我想在Axios呼叫后获得域名。因为axios调用需要域URL才能工作。
API调用是静态的,我试图放置我的域URL,调用工作正常。我们计划让我们的主题安装到另一个域,所以我的代码肯定不会工作:(。因此,我需要使其动态,使代码将工作在任何域要安装。
下面是我尝试运行的代码,但我不能得到任何工作结果:(
const axios = require("axios");
exports.main = async (context, sendResponse) => {
// Use axios to make a GET request to the search API
const config = {
method: "get",
url: `https://api.hubapi.com/crm/v3/objects/contacts/${context.contact.vid}/associations/deals`,
headers: {
Authorization: "Bearer pat-na1-1d1c158f-6f71-4669-b3e9-0d0fa47b89b2",
},
};
try {
const host = window.location.hostname;
const deals = [];
const { data: dealIds } = await axios(config);
for await (const dealId of dealIds.results) {
const { data: deal } = await axios.get(
`${"https://" + host }/_hcms/api/congratsdeal_new?id=${dealId.id}`
);
deals.push(deal);
}
sendResponse({ statusCode: 200, body: JSON.stringify(deals) });
} catch (error) {
sendResponse({ statusCode: 400, body: JSON.stringify(error) });
}
};
我想让API调用工作时安装到另一个域。使它动态,因为如果非编码器将安装主题,将无法取代静态URL,我们放置到JS文件只是为了使它的工作,这是不好的:(
1条答案
按热度按时间i86rm4rw1#
要使代码中的API调用在安装在不同域上时工作,而不对域URL进行硬编码,您可以按如下方式修改代码:
将API基URL作为参数传递:您可以将其作为参数传递给主函数,而不是硬编码API基本URL。这样,当您的代码安装在不同的域上时,您可以配置API基本URL。
对API端点使用相对URL:不要为每个API端点构建包含域的完整URL,而是为API端点使用相对URL。Axios将自动解析这些相对于您提供的基本URL的相对URL。
下面是修改后的代码:
现在,当您调用main函数时,将API基URL作为参数传递:
通过这样做,您可以基于安装代码的域动态配置apiBaseUrl,使代码在不同的域上工作,而无需在JavaScript文件中硬编码URL。