相当于PUT的Apollo GraphQL突变签名

时间:2018-10-23 07:39:21

标签: graphql apollo-client

我正在尝试通过GraphQL有效地执行PUT请求

突变:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

查询变量:

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

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

1 个答案:

答案 0 :(得分:0)

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

此外,您将PUT视为请求是什么意思?据我了解,您声明HTTP PUT方法用于修补数据。可能不正确。这取决于您如何实现。您可以轻松地创建一个REST API,该REST API可以通过GET接收数据,并通过POST或PUT方法发送数据,尽管最佳实践不建议这样做。

与您的问题相同的情况。这与您的突变签名无关,而与突变解析器的实现有关。

为了使它起作用,您应该在服务器上的解析器功能中确定这是新资源还是现有资源,并正确处理这两种情况。

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

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