如何使用例如从 AppSynch 查询网址库3
How to query from AppSynch using e.g. Urllib3
我已经在 AWS 上创建了一个 AppSynch API。我可以使用控制台或某些 AWS 特定包轻松查询它。但是我想使用一个简单的包来查询它,例如网址库3。很难找到任何人使用直接 api 调用(每个人都使用某种我似乎无法开始工作的 aws 相关包或解决方案)。我想做的查询是:
mutation provision {
provision(
noteId:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
我尝试过以下不同的变体:
query = """
mutation provision {
provision(
noteId:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
"""
headers = {"x-api-key": api_key}
http = urllib3.PoolManager()
data = json.dumps("query": query, "variables": {}, "operationName": "somename")
r = http.request('POST', url, headers=headers,
data=data.encode('utf8'))
但不知何故我无法让它工作,我不断收到 API 无法理解 POST 请求
的消息
我找到了解决方案:
import requests
import json
APPSYNC_API_KEY = APPSYNC_API_KEY
APPSYNC_API_ENDPOINT_URL = APPSYNC_API_ENDPOINT_URL
headers = {
'Content-Type': "application/graphql",
'x-api-key': APPSYNC_API_KEY,
'cache-control': "no-cache",
}
query = """
mutation provision {
provision(
inputParameters:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
"""
payload_obj = {"query": query}
payload = json.dumps(payload_obj)
response = requests.request("POST", APPSYNC_API_ENDPOINT_URL, data=payload, headers=headers)
print(response)
我已经在 AWS 上创建了一个 AppSynch API。我可以使用控制台或某些 AWS 特定包轻松查询它。但是我想使用一个简单的包来查询它,例如网址库3。很难找到任何人使用直接 api 调用(每个人都使用某种我似乎无法开始工作的 aws 相关包或解决方案)。我想做的查询是:
mutation provision {
provision(
noteId:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
我尝试过以下不同的变体:
query = """
mutation provision {
provision(
noteId:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
"""
headers = {"x-api-key": api_key}
http = urllib3.PoolManager()
data = json.dumps("query": query, "variables": {}, "operationName": "somename")
r = http.request('POST', url, headers=headers,
data=data.encode('utf8'))
但不知何故我无法让它工作,我不断收到 API 无法理解 POST 请求
的消息我找到了解决方案:
import requests
import json
APPSYNC_API_KEY = APPSYNC_API_KEY
APPSYNC_API_ENDPOINT_URL = APPSYNC_API_ENDPOINT_URL
headers = {
'Content-Type': "application/graphql",
'x-api-key': APPSYNC_API_KEY,
'cache-control': "no-cache",
}
query = """
mutation provision {
provision(
inputParameters:
{ec2Instance: "t2.micro",
s3Bucket: "dev"})}
"""
payload_obj = {"query": query}
payload = json.dumps(payload_obj)
response = requests.request("POST", APPSYNC_API_ENDPOINT_URL, data=payload, headers=headers)
print(response)