在GraphQL中,我可以使用Content-Type发送变量:application / graphql吗?

时间:2017-04-28 08:47:55

标签: graphql

我尝试过使用graphql的变量, 但似乎无法使用'application / graphql'发送变量。

我是否应该转到Content-Type:'application / json'?

3 个答案:

答案 0 :(得分:2)

http://graphql.org/learn/serving-over-http/#post-request

  

标准的GraphQL POST请求应使用application / json内容类型,并包含以下格式的JSON编码主体:

{
  "query": "...",
  "operationName": "...",
  "variables": { "myVariable": "someValue", ... }
}
  

operationName和变量是可选字段。只有在查询中存在多个操作时才需要operationName。

     

除上述内容外,我们建议另外支持两种情况:

     

...   如果" application / graphql"存在Content-Type标头,将HTTP POST主体内容视为GraphQL查询字符串。

据我了解,Content-Type: "application/graphql"是无变量查询的简写。

所以我的答案是"是的,如果我想使用变量字段,我必须使用Content-Type: "application/json"标题

答案 1 :(得分:0)

什么阻止您传递查询字符串中的变量和正文中的查询?

POST /graphql?variables={"id":1234}
Content-Type: application/graphql
query ($id: ID!) {
    Post(id: $id) {
        id
        title
        body
    }
}

答案 2 :(得分:0)

根据Facebook的express-graphql HTTP Usage,变量可以作为URL参数传递。这是一个示例:

/graphql?query=query+getUser($id:ID){user(id:$id){name}}&variables={"id":"4"}

对于application/json,有单独的变量部分。对于带有application/graphql和GET请求的POST正文,可以使用URL查询:variables={...}