下面是我想用AWS AppSync解决的用例:
saved(username: String)
{"items": ["a", "b"] }
{"images": ["1.jpg", "2.jpg"], "panoramas": ["1a.jpg"]}
{"saved": [{"images": ["1.jpg", "2.jpg"], "panoramas": ["1a.jpg"]}, {"images": ["11.jpg", "22.jpg"], "panoramas": ["1b.jpg"]}]}模式:
type Query {
saved(username: String!): [Detail]
}
type Detail {
images: [String]
panoramas: [String]
}HTTP端点非常简单:
GET /users/$username/saved/
GET /details/$itemid/我已经调查过管道解析器,但什么都不能用。此外,我试图将解析器直接附加到“细节”,这是不可能的。这里,我似乎对AppSync缺乏一些基本的理解。你能给我指出正确的方向吗?
发布于 2020-07-29 16:09:26
所以,我做了一些进一步的实验和测试,这是我最近的一次。
像这样修改您的模式;
type Query {
saved(username: String!): [Item]
type Item {
items: String
details: Details
}
type Details {
images: [String]
panorama: [String]
}用于您的saved查询;
请求模板
{
"version": "2018-05-29",
"method": "GET",
"resourcePath": "/users/$ctx.args.username/saved",
"params":{
"headers": {
"Content-Type": "application/json"
}
}
}因为您的API响应并不完全是AppSync所能识别的,所以我们必须做一些卫生工作。因此在响应模板中
#if($ctx.error)
$util.error($ctx.error.message, $ctx.error.type)
#end
#if($ctx.result.statusCode == 200)
#set($itemList = [])
#set($items = $util.parseJson($ctx.result.body).items)
#foreach($item in $items)
#set($itemJson = {})
$util.qr($itemJson.put("items", $item))
$util.qr($itemList.add($itemJson))
#end
#return($itemList)
#else
$utils.appendError($ctx.result.body, "$ctx.result.statusCode")
#end现在,您可以使用这样的details附加另一个HTTP解析器;
请求模板
{
"version": "2018-05-29",
"method": "GET",
"resourcePath": "/details/$ctx.source.items",
"params":{
"headers": {
"Content-Type": "application/json"
}
}
}响应模板
#if($ctx.error)
$util.error($ctx.error.message, $ctx.error.type)
#end
#if($ctx.result.statusCode == 200)
$ctx.result.body
#else
$utils.appendError($ctx.result.body, "$ctx.result.statusCode")
#end我测试了上面的代码,它给了我这个响应;
{
"data": {
"saved": [
{
"items": "a",
"details": {
"images": [
"1.jpg",
"2.jpg"
],
"panoramas": [
"1a.jpg"
]
}
},
{
"items": "b",
"details": {
"images": [
"11.jpg",
"22.jpg"
],
"panoramas": [
"1b.jpg"
]
}
}
]
}
}我希望这会对你有所帮助,也许不会给你问题中所问的内容(特别是你的要求4),但我希望它至少能给你一些方向。
https://stackoverflow.com/questions/63152006
复制相似问题