2016-04-18 8 views
13

私はExpress-graphqlミドルウェアを使用します。 私はボディラインに次のリクエストを送信します。Graphql post body "クエリ文字列を指定する必要があります。"

POST /graphql HTTP/1.1 
Host: local:8083 
Content-Type: application/graphql 
Cache-Control: no-cache 
Postman-Token: d71a7ea9-5502-d5fe-2e36-0ae49c635a29 

{ 
    testing { 
     pass(id: 1) { 
     idn 
     } 
    } 
} 

とgraphqlでエラー

{ 
    "errors": [ 
    { 
     "message": "Must provide query string." 
    } 
    ] 
} 

を持って、私はURLで更新を送信することができます。

URL文字列が短すぎます。

mutation { 
    update(id: 2, x1: "zazaza", x2: "zazaza", x3: "zazaza" ...(more more fields)...) { 
    idn 
    } 
} 

のような更新モデルを送信する必要があります。リクエストボディに入れる必要があると思います。どのように私は '更新'クエリを送信することができますか、私は間違っている?

+1

"in graphql私はURLで更新を送信できます。" < - graphiqlを意味しますか? –

+0

私は "postman"を使ってリクエストを送ります。 – Gopard

答えて

21

それは私の悪かったです。

ポスト要求は、Content-Typeのアプリケーション/ JSON を必要としますが、あなたはgraphqlを使用し、郵便配達やその他のレストクライアントはこれを行う使用してテストしたい場合はリクエストボディは、文字列

{"query":"mutation{update(id:1,x1:\"zazaz\",x2:\"zazaz\"......){id x1 x2}}"} 
1

のように見えます。郵便配達で

POST方法を選択してURLを入力しapplication/graphqlとしてContent-Typeを設定し、その後体内でクエリを渡します。

例:

http://localhost:8080/graphql 
Mehtod: POST 
Content-Type: application/graphql 
Body: 
    query{ 
    FindAllGames{ 
    _id 
    title 
    company 
    price 
    year 
    url 
    } 
} 

ザッツそれあなたが応答を取得します。

enter image description here

+0

同じエラーが発生しても動作しません – Vivek

関連する問題