阿波罗图QL突变特征等同于PUT



我正在尝试使用 GraphQL 有效地执行 PUT 请求

突变:

export const UPDATE_CAT = gql`
mutation updateCat($catRef: RefInput, $payload: CatInput) {
updateCat(ref: $catRef, input: $payload) {
${ref}
}
}
`;

查询变量:

{
"catRef": {
"id": "7b342789-e527-42a6-997b-cfe2fb6bdb07",
"typename": "cat.beacon.Beacon"
},
"payload":{
"position": null,
}
}

虽然这似乎擦除了 cat 实体上的所有道具(它不会删除资源(。这是类似 PUT 的请求的正确语法吗?

首先,我认为值得注意的是,graphql 与协议无关。这意味着可以使用任何传输协议,而不一定是HTTP(尽管在大多数情况下使用HTTP(。

另外,您所说的 PUT 喜欢请求是什么意思?据我了解,您声明HTTP PUT方法用于修补数据。这可能不是真的。这取决于您如何实现这一点。您可以轻松创建一个 REST API,该 API 通过 GET 接受数据并通过 POST 或 PUT 方法发送,尽管最佳实践不建议这样做。

你的问题也有同样的情况。这不是关于您的突变签名,而是关于突变解析器的实现。

为了完成此操作,您应该在服务器上的解析程序函数中确定这是新资源还是现有资源,并正确处理这两种情况。

如何检查这是否是新资源?在这种情况下,id prop 将是未定义的,对吧?

如果您使用的是第三方 api,请检查它的文档。

最新更新