输入提示快速 API
在旅行者搜索时提供建议
Typehead (GET /suggestions
) 是一个新的 API 端点,可让您根据地理区域、相关位置和可用属性为旅行者提供建议性搜索体验。此端点根据部分搜索字符串和输入的任何请求参数返回建议列表。请联系您的客户经理将输入提示添加到您的帐户。
如何操作
输入提示 API 是一种语言预测工具——有时也称为自动完成或自动建议。它根据在搜索框中输入的部分信息返回区域、位置或属性的列表。当用户在搜索框中输入内容时,输入提示 API 将开始使用城市、地区、属性或邮政编码信息返回最多 10 个结果。然后,旅行者可以从此列表中选择以开始搜索,或者继续输入以继续优化自动建议的结果。
例如,以“Memp”开头的搜索将会看到几个地理选项,包括与美国田纳西州孟菲斯相关的街区、火车站、机场等,其次是美国密苏里州孟菲斯。
启动指南
您需要联系您的客户经理或 Partner Connect 代表来了解 API。他们会请求访问批准,如果获得批准,他们会修改您的协议以包含输入提示。一旦您的组织启用了输入提示,Partner Connect 代表将为您提供任何必要的开发支持。
上线要求:
- 您必须采用并使用不透明访问令牌流程进行身份验证。
- 访问令牌只能由请求它的相同电路 ID 或 API 密钥使用。
- 访问令牌只能存在 25 分钟。
- 应构建新的访问令牌请求,以便按照该计划持续刷新,而不要过于频繁地更新。
- 语言和请求的文本是必需参数。请参阅Rapid 支持的语言列表。
授权和访问
目前使用 Rapid 版本 3 的合作伙伴可以在 API 端点上请求 Rapid 输入提示 API。一旦获得批准,您现有的个人资料将拥有成功使用 API 所需的权限。
建立授权
输入提示 API 的身份验证与我们的其他 Rapid API 功能不同,因为它需要访问密钥。使用授权标头,您将提供您的 apikey 来调用 EPS 网关以获取访问密钥。然后,您可以通过传递访问密钥作为授权标头来调用输入提示 API 端点。
示例:以 base64 格式编码 API 密钥
var api_key = postman.getEnvironmentVariable("api_key");
var shared_secret= postman.getEnvironmentVariable("shared_secret");
var base64Hash = CryptoJS.enc.Utf8.parse(api_key + ":" + shared_secret);
var base64 = CryptoJS.enc.Base64.stringify(base64Hash);
postman.setEnvironmentVariable("base64",base64);
获取不透明访问令牌
使用输入提示 API 需要一个不透明的访问令牌(不包含有关用户或资源的任何信息的访问令牌)。
示例请求
POST – https://api.ean.com/identity/oauth2/v3/token
Header:
Key: ‘Authorization’
Value: ‘Basic {base64}’
示例响应
{
"access_token": "p1xy6rxahicQPUIX_Sq6a52yFnHXpX3ImaSX9sKiUI4:XM8qZiTr1HPDc8FgBE5HLvFTFdICuRFV0-l7gFWI-WU",
"token_type": "bearer",
"expires_in": 1800,
"scope": "demand-solutions.demand-api-wrappers-playground.all"
}
发出自动完成请求
您需要在请求标头和查询参数中包含一些必需的信息。为了使响应更加稳健,您还可以包含可选的查询参数。
请求标头
是否必需
Accept
:指定客户端希望接收的响应格式。该值必须是application/json
。Accept-Encoding
:指定客户端希望接收的响应编码。该值必须是gzip
。User-Agent
:来自客户请求的标头字符串,由您的集成捕获。如果您正在构建应用程序,那么User-Agent
值应该是{app name}/{app version}
。例如,TravelNow/3.30.112
。
查询参数
是否必需
language
:将响应所需的语言指定为 BCP47 格式的子集,该子集仅使用带连字符的 two-digit 语言和国家代码对。仅使用 w3.org 描述的 ISO639-1 alpha 2 语言代码和 ISO3166-1 alpha 2 国家/地区代码(例如,language=en-US
)。请参阅Rapid 支持的语言列表。text
:要查询的输入字符串,限制为 150 个字符(例如,text=Springfie
)。
可选
type
:描述用户正在寻找的地点。此参数可以多次提供,并带有不同的值(例如,type=AIRPORT&type=CITY
)。如果未提供,则默认将包括所有类型。请参阅下面的允许值表以了解可用选项。line_of_business
:此参数提供搜索启发式方法,有效值可确保响应更加相关。虽然此参数是可选的,但省略它可能会影响搜索结果,因此我们将默认值设置为properties
。请参阅下面的允许值表以了解可用选项。package_type
:按用户指定的包裹类型进行过滤。请参阅下面的允许值表以了解可用选项。feature
:改变建议结果的计算。值包括hierarchy
、nearby_airport
和postal_code
。region_id
:将结果过滤为具有指定区域的属性。origin
:指定查询文本是否是起点而非终点。默认搜索将仅查找目的地。limit
:指定响应返回的最大建议数。该值必须介于 1 到 10 之间(例如,limit=5
)。如果未提供此参数,则默认值为 10。
允许值
type | line_of_business | package_type |
---|---|---|
airport | properties (默认) | flight_property |
city | flights | flight_property_car |
multi_city_vicinity | packages | flight_car |
neighborhood | cars | property_car |
point_of_interest | activities | |
airport_metro_code | ||
multi_region | ||
train_station | ||
metro_station | ||
address | ||
property | ||
bus_station |
上表中未包含的任何值都将导致错误。
数据请求
一旦你有了access_token
,您将设置GET
要求。
示例请求
GET - https://api.ean.com/v3/suggestions?language=en-US&line_of_business=properties&limit=3&text=chicago&type=city&type=neighborhood
Header :
Authorization: Bearer {{access_token}}
示例响应
[
{
"related_id": "4477519",
"type": "airport",
"name": "Chicago, IL (ORD-O'Hare Intl.)",
"name_full": "Chicago, IL, United States of America (ORD-O'Hare Intl.)",
"name_display": "<B>Chicago</B>, IL, United States of America (ORD-O'Hare Intl.)",
"country_code": "US",
"country_code_3": "USA",
"iata_airport_code": "ORD",
"iata_airport_metro_code": "CHI",
"coordinates": {
"latitude": 41.976977,
"longitude": -87.90481
}
},
{
"related_id": "829",
"type": "city",
"name": "Chicago",
"name_full": "Chicago, Illinois, United States of America",
"name_display": "<B>Chicago</B>, Illinois, United States of America",
"country_code": "US",
"country_code_3": "USA",
"iata_airport_code": "CHI",
"iata_airport_metro_code": "CHI",
"coordinates": {
"latitude": 41.878113,
"longitude": -87.629799
}
},
{
"related_id": "6350699",
"type": "neighborhood",
"name": "Downtown Chicago",
"name_full": "Downtown Chicago, Chicago, Illinois, United States of America",
"name_display": "Downtown <B>Chicago</B>, <B>Chicago</B>, Illinois, United States of America",
"country_code": "US",
"country_code_3": "USA",
"iata_airport_code": "CHI",
"iata_airport_metro_code": "CHI",
"coordinates": {
"latitude": 41.885969845574834,
"longitude": -87.62933540465228
}
}
]
错误代码
输入提示 API 与其他 Rapid API 共享常见的错误代码。所有这些代码都在我们的常见错误响应页。
与其他快速 API 交互
当最终用户在搜索栏中输入文本时,输入提示 API 会根据搜索的指定提取区域(区域 ID、名称、坐标等)或属性信息type
。然后,API 会将该信息作为结果显示在自动完成列表中。
当用户从自动完成列表中选择一个区域时,将调用区域 API 来获取该区域周围的属性列表。使用从该搜索返回的属性 ID 来调用商店 API、获取可用性并在列表中显示属性。
如果用户从自动完成列表中选择一个属性,购物 API 将生成一个详细信息页面,其中包含可用性和属性内容的信息。
API 详情
查看此页面上相关的端点定义,然后使用 API Explorer 或其他测试软件来了解示例和模式定义与实际输出的比较。
其他资源
无论您是想尝试所有 Rapid API 端点还是下载其 OpenAPI 规范或我们的 Postman 集合,我们都能满足您的需求。