AppSync 期望什么响应格式?
What response format does AppSync expect?
我是 AWS 的新手,需要建议。我在 AppSync
中描述了一个 GraphQL
模式。方案很简单,只有一个Query
,叫做getEmployees
。作为此查询的解析器,我在 Python 中使用 AWS Lambda
函数。此 AWS Lambda 函数可以正常运行。日志中没有错误。当我发出请求时,我总是得到空值。可能是什么问题呢?我错过了什么?
AppSync 中的 GraphQL 模式:
type Employees {
employeeId: String!
employeeFirstName: String
employeeLastName: String
}
type EmployeesPayload {
pagingState: String
employees: [Employees]
}
type Query {
getEmployees(organizationId: String!, fetchSize: Int!, pagingState: String): EmployeesPayload
}
schema {
query: Query
}
Python中的 AWS Lambda 函数:
def lambda_handler(event, context):
organization_id = event['arguments']['organizationId']
fetch_size = event['arguments']['fetchSize']
paging_state = event['arguments']['pagingState']
# Business logic
response = json.dumps(
{
"pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
"employees": [
{
"employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
"employeeFirstName": "James",
"employeeLastName": "Bond"
}
]
},
indent=4,
sort_keys=True,
ensure_ascii=False,
default=utils.json_serializer
)
return response
我这样查询:
query MyQuery {
getEmployees(organizationId: "5d354323-8b47-447e-8bc7-67dae57248b0", fetchSize: 5, pagingState: null) {
pagingState
employees {
employeeId
employeeFirstName
employeeLastName
}
}
}
响应:
{
"data": {
"getEmployees": {
"pagingState": null,
"employees": null
}
}
}
P.S. 在 AppSync 设置中,我禁用了请求和响应映射模板。
好吧,我终于找到了答案。在反复试验的帮助下,我意识到 AWS Lambda 函数不需要序列化 JSON 中的数据。灭菌由 AppSync 本身处理。
def lambda_handler(event, context):
organization_id = event['arguments']['organizationId']
fetch_size = event['arguments']['fetchSize']
paging_state = event['arguments']['pagingState']
# Business logic
response = {
"pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
"employees": [
{
"employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
"employeeFirstName": "James",
"employeeLastName": "Bond"
}
]
}
return response
我是 AWS 的新手,需要建议。我在 AppSync
中描述了一个 GraphQL
模式。方案很简单,只有一个Query
,叫做getEmployees
。作为此查询的解析器,我在 Python 中使用 AWS Lambda
函数。此 AWS Lambda 函数可以正常运行。日志中没有错误。当我发出请求时,我总是得到空值。可能是什么问题呢?我错过了什么?
AppSync 中的 GraphQL 模式:
type Employees {
employeeId: String!
employeeFirstName: String
employeeLastName: String
}
type EmployeesPayload {
pagingState: String
employees: [Employees]
}
type Query {
getEmployees(organizationId: String!, fetchSize: Int!, pagingState: String): EmployeesPayload
}
schema {
query: Query
}
Python中的 AWS Lambda 函数:
def lambda_handler(event, context):
organization_id = event['arguments']['organizationId']
fetch_size = event['arguments']['fetchSize']
paging_state = event['arguments']['pagingState']
# Business logic
response = json.dumps(
{
"pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
"employees": [
{
"employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
"employeeFirstName": "James",
"employeeLastName": "Bond"
}
]
},
indent=4,
sort_keys=True,
ensure_ascii=False,
default=utils.json_serializer
)
return response
我这样查询:
query MyQuery {
getEmployees(organizationId: "5d354323-8b47-447e-8bc7-67dae57248b0", fetchSize: 5, pagingState: null) {
pagingState
employees {
employeeId
employeeFirstName
employeeLastName
}
}
}
响应:
{
"data": {
"getEmployees": {
"pagingState": null,
"employees": null
}
}
}
P.S. 在 AppSync 设置中,我禁用了请求和响应映射模板。
好吧,我终于找到了答案。在反复试验的帮助下,我意识到 AWS Lambda 函数不需要序列化 JSON 中的数据。灭菌由 AppSync 本身处理。
def lambda_handler(event, context):
organization_id = event['arguments']['organizationId']
fetch_size = event['arguments']['fetchSize']
paging_state = event['arguments']['pagingState']
# Business logic
response = {
"pagingState": "c76f05f9-337d-44dc-b131-c1dfee3ceefb",
"employees": [
{
"employeeId": "bd811630-0d42-49cd-8d63-7679d9eb96bb",
"employeeFirstName": "James",
"employeeLastName": "Bond"
}
]
}
return response