- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:这是显示如何获取访问 token 的代码。我也在这里使用免费的测试 api(不需要信用卡)。
显示了对 test.api.amadeus.com/v2/shopping/flight-offers 的第一个 API 调用。
这是对 test.api.amadeus.com/v1/shopping/flight-offers/pricing api 的第二次 api 调用,我不知道如何格式化。
我的问题仍然存在,使用 R 调用第二个 API 的正确方法是什么?
R 脚本
library("tidyverse")
library("httr")
library("rjson")
amadeus_api_key_prod <- Sys.getenv("AMADEUS_API_KEY")
amadeus_api_secret_prod <- Sys.getenv("AMADEUS_SECRET")
# Initialize variables
tmp_origin <- NULL
tmp_dest <- NULL
tmp_avg_total_fare <- NULL
# Get Token
response <- POST("https://test.api.amadeus.com/v1/security/oauth2/token",
add_headers("Content-Type" = "application/x-www-form-urlencoded"),
body = list(
"grant_type" = "client_credentials",
"client_id" = amadeus_api_key_prod,
"client_secret" = amadeus_api_secret_prod),
encode = "form")
response
rsp_content <- content(response, as = "parsed", type = "application/json")
access_token <- paste0("Bearer ", rsp_content$access_token)
origin <- "JFK"
dest <- "LHR"
dep_date <- "2021-12-01"
return_date <- "2021-12-18"
max_num_flights <- 1
url <- paste0("https://test.api.amadeus.com/v2/shopping/flight-offers?originLocationCode=",
origin,
"&destinationLocationCode=",
dest,
"&departureDate=",
dep_date,
"&returnDate=",
return_date,
"&max=",
max_num_flights,
"&adults=1&nonStop=false&travelClass=ECONOMY&max=1¤cyCode=CAD")
# Get flight info
response <- GET(url,
add_headers("Content-Type" = "application/x-www-form-urlencoded",
"Authorization" = access_token),
encode = "form")
response
rsp_content <- content(response, as = "parsed", type = "application/json")
rsp_content
# Get current, more detailed flight info
# This is the part I do not know how to do
url2 <- "https://test.api.amadeus.com/v1/shopping/flight-offers/pricing"
flt_info <- toJSON(rsp_content[["data"]])
response2 <- GET(url2,
add_headers("Authorization" = access_token),
body = list(
"priceFlightOffersBody" = flt_info
),
encode = "form")
response2
rsp_content2 <- content(response2, as = "parsed", type = "application/json")
rsp_content2
原始问题
我正在使用 Amadeus 航类信息 API 来检索航类价格。我的理解是要获得完整的价格信息需要两个步骤。
我可以成功执行第一个 api 调用,包含起点、目的地、日期等。第二个调用确认定价仍然可用,并且比第一个 api 调用有更详细的票价明细。我最感兴趣的是这种详细的分割。
我无法理解从第一个 api 调用返回的哪些信息需要传递给第二个 api 调用以及以什么格式传递。
下面,我包含了从第一个 api 调用返回的数据结构和我调用第二个 api 的失败尝试。
使用 R 调用第二个 API 的正确方法是什么?
我认为是相关文档的链接:
# Data structure returned from call to https://api.amadeus.com/v2/shopping/flight-offers
# For YYZ to YOW return, Dec 1-18 economy
rsp_content <- list(meta = list(count = 1L, links = list(self = "https://api.amadeus.com/v2/shopping/flight-offers?originLocationCode=YYZ&destinationLocationCode=YOW&departureDate=2021-12-01&returnDate=2021-12-18&max=1&adults=1&nonStop=false&travelClass=ECONOMY&max=1¤cyCode=CAD")),
data = list(list(type = "flight-offer", id = "1", source = "GDS",
instantTicketingRequired = FALSE, nonHomogeneous = FALSE,
oneWay = FALSE, lastTicketingDate = "2021-08-07", numberOfBookableSeats = 7L,
itineraries = list(list(duration = "PT1H10M", segments = list(
list(departure = list(iataCode = "YYZ", terminal = "3",
at = "2021-12-01T11:00:00"), arrival = list(iataCode = "YOW",
at = "2021-12-01T12:10:00"), carrierCode = "WS",
number = "3462", aircraft = list(code = "DH4"),
duration = "PT1H10M", id = "1", numberOfStops = 0L,
blacklistedInEU = FALSE))), list(duration = "PT1H21M",
segments = list(list(departure = list(iataCode = "YOW",
at = "2021-12-18T10:45:00"), arrival = list(iataCode = "YYZ",
terminal = "3", at = "2021-12-18T12:06:00"),
carrierCode = "WS", number = "3463", aircraft = list(
code = "DH4"), duration = "PT1H21M", id = "2",
numberOfStops = 0L, blacklistedInEU = FALSE)))),
price = list(currency = "CAD", total = "232.78", base = "125.00",
fees = list(list(amount = "0.00", type = "SUPPLIER"),
list(amount = "0.00", type = "TICKETING")), grandTotal = "232.78"),
pricingOptions = list(fareType = list("PUBLISHED"), includedCheckedBagsOnly = FALSE),
validatingAirlineCodes = list("WS"), travelerPricings = list(
list(travelerId = "1", fareOption = "STANDARD", travelerType = "ADULT",
price = list(currency = "CAD", total = "232.78",
base = "125.00"), fareDetailsBySegment = list(
list(segmentId = "1", cabin = "ECONOMY", fareBasis = "LAVD0TBJ",
brandedFare = "BASIC", class = "E", includedCheckedBags = list(
quantity = 0L)), list(segmentId = "2",
cabin = "ECONOMY", fareBasis = "LAVD0ZBI",
brandedFare = "BASIC", class = "E", includedCheckedBags = list(
quantity = 0L))))))), dictionaries = list(
locations = list(YOW = list(cityCode = "YOW", countryCode = "CA"),
YYZ = list(cityCode = "YTO", countryCode = "CA")),
aircraft = list(DH4 = "DE HAVILLAND DHC-8 400 SERIES"),
currencies = list(CAD = "CANADIAN DOLLAR"), carriers = list(
WS = "WESTJET")))
# Get full pricing info
url2 <- "https://api.amadeus.com/v1/shopping/flight-offers/pricing"
# Get pricing info
response2 <- GET(url2,
add_headers("Authorization" = access_token),
body = list(
"priceFlightOffersBody" = rsp_content[["data"]][[1]]
),
encode = "form")
response2
rsp_content2 <- content(response2, as = "parsed", type = "application/json")
rsp_content2
最佳答案
你可以看看这个blog article ,它解释了数据需要如何在 3 个端点之间传递,并且在 Postman 上有一个视频显示。
您可以查看 Amadeus for Developers 团队构建的一些代码示例。这里为 Flight Offers Price (使用不同的编程语言,但不是 R)这里是 Flight Create Orders (包括前面的搜索和定价步骤)。
他们还有几个演示应用程序,向您展示如何组合这些端点来构建航类预订引擎,其中一个是用 Python 编写的,您可以找到 here .
关于r - 从 R 调用 Amadeus flight-offers-pricing API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68675873/
我感兴趣的是,在使用 JFR 程序进行分析时,是否可以为每个或大多数用户方法获取以纳秒为单位的开始和结束时间? 我知道可以使用代码检测,但我想利用采样分析器的优势来减少对实际程序执行的影响。 我觉得这
我正在开发 iOS 应用程序,需要识别应用程序运行的环境以对 API 端点进行分类。我想知道该应用程序是否在生产、模拟器和试飞下运行。我已经通过用户定义的设置对生产和模拟器进行了分类,但我仍然不确定如
Java Flight Recorder 现在是 OpenJDK 11 的一部分,并提供自定义事件的使用。 成功录制后,我想重用事件中的信息(尤其是我自己的自定义事件),但不知何故我无法读取事件的字段
我正在使用 jvm 的命令行参数列表 -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=延迟=2m,
我才刚刚开始使用 Flight.js并意识到组件实例共享局部变量,但在文档中没有找到任何相关信息。 这就是我的意思: flight.component(function () { var sh
Java Mission Control jmc 的用户界面允许我生成Flight Recorder 记录。在 Start Flight Recording 对话框中,我可以输入要生成的记录文件的名称
将应用提交审核后,我无法向构建中添加新的测试人员或新的测试组。单击 App Store 连接中构建下的“测试飞行”选项卡中的添加按钮时,会显示一个弹出消息,其中包含消息 “您只能将 1.9.5 版的一
我试图破译 context 中“飞行中请求”的含义浏览器加载网页: Look for the first interactive window where there is a contiguous
最近去一家公司面试(M开头,A结尾)问了我这个问题。仍在练习我的算法,所以我希望有人能帮助我理解如何解决这个问题,以及这些类型的问题。 问题: 给你 2 个数组。例如: D = [10,7,13,12
假设我使用以下标志为我的 JVM 配置了连续飞行记录 java -XX:StartFlightRecording=disk=false,dumponexit=true -XX:FlightRecord
我正在开发一个打算使用an Amazon SQS Delay Queue的项目。 我在准确理解“飞行中”消息的含义方面有些麻烦。 文档中有一条注释,内容为: Note There is a 120,0
我们的 CI 中有一项工作,用于启动 Java 应用程序并运行一些测试(该测试充当应用程序的客户端)。该应用程序是使用我认为正确的 JVM 选项来启动连续飞行记录的: -XX:+UnlockComme
我正在尝试通过使用 osgGA::AnimationPathManipulator 将 osg::AnimationPath 应用于我的 osgViewer::Viewer 实例的相机。我的问题是 A
一直在寻找如何通过 Twitter Flight 附加到动态创建的元素。 具有以下 HTML Add element 以及下面的组件定义 var Article = flight.component(
我有一个 Java 进程,我使用以下选项启动它(如此处建议:parameters for FR): -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
我的应用程序需要一个从我们的服务器接收远程通知的功能。它在 expo 和模拟上工作正常,但在独立的 iOS 上,它向我显示这样的错误 我通过试飞安装此应用程序,其中“通知”权限返回状态为“未确定”,因
我的目标是建立一个解耦的 UI 架构。我希望轮播和分页组件彼此分开;但分页能够监听 uiCarouselMoved 事件的更改。 示例:http://jsbin.com/uQadehI/1/edit?
我在 TestFlight 服务器中有 v1.1.1 和 v1.1.3。是否可以完全删除 1.1.3 然后上传 v1.1.2? 最佳答案 您甚至不需要删除 1.1.3,您只需上传 1.1.2 的新版本
我正在使用 Java Mission Control + Flight Recorder 分析 java8 JVM 进程。 在 I/O 选项卡下检查记录时,它说: "Event types 'File
有个奇怪的问题... 在我的 AppDelegate.m 中,我有以下内容: -(BOOL)application:(UIApplication *)application didFinishLaun
我是一名优秀的程序员,十分优秀!