我正在使用 TypeScript 开发 Node.js 应用程序,并且正在尝试集成 Google Places 文本搜索(新)API。我试图确保我的请求输入正确,但我在合并类型时遇到问题。
这是我目前拥有的一个基本示例:
import axios from 'axios';
const apiKey = 'MY_API_KEY';
const endpoint = `https://places.googleapis.com/v1/places:searchText`;
async function searchPlaces(query: string) {
const payload = { textQuery: query };
const response = await axios.post(endpoint, payload, {
headers: {
'Content-Type': 'application/json',
'X-Goog-Api-Key': apiKey,
'X-Goog-FieldMask': '*',
},
});
return response.data;
}
我想知道:
任何指导或示例将不胜感激!
我发现了一个看似官方的 API 客户端包:https://www.npmjs.com/package/@googlemaps/places。要对其进行身份验证,您应该使用
google-auth-library
。
我通常会开始搜索官方 NPM 包注册表,如下所示:https://www.npmjs.com/search?q=Google%20Places%20API。在这种情况下,我跳过了 React 绑定的包,官方的 Google 包是之后的第一个包。
此代码应该适用于您的示例(未经测试):
import { PlacesClient } from "@googlemaps/places";
import { GoogleAuth } from "google-auth-library";
const apiKey = "MY_API_KEY";
const authClient = new GoogleAuth().fromAPIKey(apiKey);
const placesClient = new PlacesClient({
authClient,
});
async function searchPlaces(query: string) {
const payload = { textQuery: query };
const [ response ] = await placesClient.searchText(payload, {
otherArgs: {
headers: {
"X-Goog-FieldMask": "*",
},
},
});
return response.places;
}