api 调用中明确包含缺少的关键字参数
missing keyword parameter is clearly included in api call
我正在尝试设置对 Amadeus 的基本 API 调用。所有正确的参数都包含在内,我为每次调用获取一个新令牌。
这是一个 React/Flask 应用程序。
这是我在 app/routes.py 中的端点:
@app.route('/search', methods=['GET'])
@cross_origin(origin='*')
def get_flights():
api_key = os.environ.get('amadeus_api_key', None)
api_secret = os.environ.get('amadeus_api_secret', None)
# first, you must get an access token using your Amadeus credentials
token_request = requests.post(
'https://test.api.amadeus.com/v1/security/oauth2/token',
data = {
'grant_type': 'client_credentials',
'client_id': api_key,
'client_secret': api_secret
}
)
token = token_request.json()['access_token']
bearer = 'Bearer {}'.format(token)
locations = requests.get(
'https://test.api.amadeus.com/v1/reference-data/locations',
headers = {
'Authorization': bearer
},
data = {
'subType': 'AIRPORT',
'keyword': 'BOS'
}
)
print(locations.json())
# example:
# https://test.api.amadeus.com/v1/reference-data/locations
# ?subType=AIRPORT&keyword=BOS
return jsonify({'token': token})
这是错误:
{'errors': [{'status': 400, 'code': 32171, 'title': 'MANDATORY DATA MISSING', 'detail': 'Missing mandatory query parameter', 'source': {'parameter': 'keyword'}}]}
正如您在 /search 端点中看到的那样,关键字参数显然包含在内。
什么给了?我错过了什么吗?
获取位置的请求未正确构建,因为它发送 subType
和 keyword
作为主体而不是查询参数。根据 requests
文档,您需要使用 params
:
locations = requests.get(
'https://test.api.amadeus.com/v1/reference-data/locations',
headers = {
'Authorization': bearer
},
params = {
'subType': 'AIRPORT',
'keyword': 'BOS'
}
)
我正在尝试设置对 Amadeus 的基本 API 调用。所有正确的参数都包含在内,我为每次调用获取一个新令牌。
这是一个 React/Flask 应用程序。
这是我在 app/routes.py 中的端点:
@app.route('/search', methods=['GET'])
@cross_origin(origin='*')
def get_flights():
api_key = os.environ.get('amadeus_api_key', None)
api_secret = os.environ.get('amadeus_api_secret', None)
# first, you must get an access token using your Amadeus credentials
token_request = requests.post(
'https://test.api.amadeus.com/v1/security/oauth2/token',
data = {
'grant_type': 'client_credentials',
'client_id': api_key,
'client_secret': api_secret
}
)
token = token_request.json()['access_token']
bearer = 'Bearer {}'.format(token)
locations = requests.get(
'https://test.api.amadeus.com/v1/reference-data/locations',
headers = {
'Authorization': bearer
},
data = {
'subType': 'AIRPORT',
'keyword': 'BOS'
}
)
print(locations.json())
# example:
# https://test.api.amadeus.com/v1/reference-data/locations
# ?subType=AIRPORT&keyword=BOS
return jsonify({'token': token})
这是错误:
{'errors': [{'status': 400, 'code': 32171, 'title': 'MANDATORY DATA MISSING', 'detail': 'Missing mandatory query parameter', 'source': {'parameter': 'keyword'}}]}
正如您在 /search 端点中看到的那样,关键字参数显然包含在内。
什么给了?我错过了什么吗?
获取位置的请求未正确构建,因为它发送 subType
和 keyword
作为主体而不是查询参数。根据 requests
文档,您需要使用 params
:
locations = requests.get(
'https://test.api.amadeus.com/v1/reference-data/locations',
headers = {
'Authorization': bearer
},
params = {
'subType': 'AIRPORT',
'keyword': 'BOS'
}
)