web-dev-qa-db-ja.com

Graphqlの投稿本文「クエリ文字列を提供する必要があります。」

Express-graphqlミドルウェアを使用します。本文に次のリクエストを送信します。

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
      }
    }
}

そしてエラーがあります

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

graphqlでは、URLで更新を送信できます。

URL文字列が短すぎます。のような更新モデルを送信する必要があります

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

私はそれがリクエストボディにあるに違いないと思います。 「更新」クエリを送信したり、間違っていることを送信するにはどうすればよいですか?

24
Gopard

リクエストを送信するには、ヘッダー情報を管理する必要があります。

  1. HTTPクライアントの使用:Content-Type application/json

  2. Postmanクライアントの使用:Content-Type application/graphql

しかし、リクエストの本文は文字列のように見えます

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

Graphqlを使用していて、postmanまたはその他のRestクライアントを使用してテストする場合は、これを実行します。

郵便配達員で、POSTメソッドを選択し、URLを入力してContent-Type as application/graphqlその後、クエリを本文に渡します。

例:

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

それはあなたが応答を得るということです。

enter image description here

8
Prasanth Jaya

コンテンツタイプをJSONに切り替えます。このように Postman画像を参照

0
user10334760

Postmanバージョンの使用7.2.2同様の問題がありました。このバージョンのPostmanは、すぐにGraphqlをサポートします。 Content-typeをapplication/jsonに変更すると、修正されました。 Postmanのコンテンツタイプを示す画像

0
gbenga_ps