Node.js 如何正确地将请求代理到Google Maps嵌入API?
我正在尝试使用嵌入一个与用户输入的地址匹配的映射。按照开发人员指南,我获得了一个API密钥以添加到我的API请求中。当我通过React客户端中iframe的“src”属性请求映射时,我能够成功地拉出映射,如下所示:Node.js 如何正确地将请求代理到Google Maps嵌入API?,node.js,reactjs,docker,iframe,google-maps-embed,Node.js,Reactjs,Docker,Iframe,Google Maps Embed,我正在尝试使用嵌入一个与用户输入的地址匹配的映射。按照开发人员指南,我获得了一个API密钥以添加到我的API请求中。当我通过React客户端中iframe的“src”属性请求映射时,我能够成功地拉出映射,如下所示: <iframe ... src={`https://www.google.com/maps/embed/v1/${mode}?key=${apiKey}&q=${encodedAddressQuery}`} > 我正在Docker容器中运行React
<iframe
...
src={`https://www.google.com/maps/embed/v1/${mode}?key=${apiKey}&q=${encodedAddressQuery}`}
>
我正在Docker容器中运行React前端和Node.js后端
我最好的猜测是,我缺少了MapsAPI所期望的一个请求头,但我还没有找到任何关于该请求头的文档,或者可能我误解了一些更基本的东西。非常感谢您的指导。限制您的API密钥。文档中也解释了这一点。限制API密钥。文档中也解释了这一点。
<iframe
...
src={`http://127.0.0.1:3001/api/maps?parameters=${encodedAddressQuery}`}
>
router.get('/api/maps', async (req: Request, res: Response) => {
try {
const parameters = req.query.parameters;
const map = await MapDataAccessObject.getOne(parameters);
return res.status(OK).send(map.data);
} catch (err) {
...
}
});
export class MapDataAccessObject {
public static async getOne(parameters: string) {
const apiUrl = this.getMapsEmbedUrl(parameters);
const map = await axios.get(apiUrl);
return map;
}
private static getMapsEmbedUrl(parameters: string) {
const encodedParams = encodeURI(parameters);
return `https://www.google.com/maps/embed/v1/place?key=${process.env.MAPS_API_KEY}&q=${encodedParams}`;
};
}