Jak wysłać zapytanie graphql listonoszem?


81

używam

POST type
URL http://######/graphql
Body: 
query: "query: "{'noteTypes':  {'name', 'label', 'labelColor', 'groupName', 'groupLabel', 'imageUrl'}}"

Ale zwraca „komunikat”: „Musi podać ciąg zapytania”.

Odpowiedzi:


136

Jest lepszy sposób na zrobienie tego za pomocą klienta REST Insomnia

Dokumenty są tutaj, jak wysyłać zapytania Graphql: https://support.insomnia.rest/article/61-graphql


Poniżej znajdują się kroki dla listonosza

Krok 1.

Uruchom GraphiQL w Chrome, otwórz konsolę deweloperską Chrome, kliknij kartę Sieć i wykonaj zapytanie z graphiql, kiedy wykonasz zapytanie, karta sieci pokaże żądanie graphql ...

wprowadź opis obrazu tutaj

Krok 2.

Z graphqlżądania skopiuj zapytanie żądania, wybierz plikCopy as cURL (cmd)

wprowadź opis obrazu tutaj

Krok 3.

Otwórz Listonosza, w lewym górnym rogu kliknij Importprzycisk, po kliknięciu Importmusisz kliknąć Paste Raw Texti wkleić skopiowane cURLżądanie, tak jak w kroku 2, po zakończeniu kliknijImport

wprowadź opis obrazu tutaj

Krok 4.

Listonosz jest gotowy do wysłania żądania Graphql, po prostu kliknij Sendprzycisk, zobaczysz Responsew polu odpowiedzi w treści, jak poniżej

wprowadź opis obrazu tutaj

Krok 5.

Aby zobaczyć jak zapytanie jest wysyłane kliknij w Bodyzakładkę obok Headers, dowiesz się jak podać pola od listonosza w formacie JSON.

np .: edges {\n node {\n id\n jobId\n }\n, Jeśli chcesz zobaczyć inne pole, musisz dodać je z sufiksem\n

jak w razie potrzeby name:edges {\n node {\n id\n jobId\n name\n }\n

\ntutaj oznacza po prostu reprezentowanie nowej linii. Zamiast tego możesz to uprościć, dostarczając jasny i ilustracyjny kod JSON, jak poniżej

==================================================== =========================

Uwaga : typ treści musi być surowy zapplication/jsontypem zawartości. Zatem zapytanie musi być poprawnym plikiem JSON z cudzysłowami".."

{  
   "query":"{viewer {user {edges {node {id jobId name }}}}}"
}

==================================================== =========================

wprowadź opis obrazu tutaj

możesz zacząć od razu, step 5jeśli wiesz, jak wysłać zapytanie w treści i inne rzeczy, które muszą być wymagane podczas składania wniosku od listonosza

wprowadź opis obrazu tutaj

Z uproszczonym JSON

wprowadź opis obrazu tutaj


1
Niesamowity! Niesamowity!
ZPPP

naprawdę listonosz nie jest przydatny dla graphql, potrzebujemy graphiql z ekranami listonosza
stackdave

Wspaniale, dziękuję za twój sen
zhulinpinyu

Podczas wykonywania tych samych kroków, które otrzymuję :, Błąd podczas importowania Curl: 2 znaleziono argumenty bez opcji. Obsługiwany jest tylko jeden (adres URL)
Ankit Gupta

2
Kopiowanie jako cURL (bash) działało dla mnie, zamiast Kopiuj jako cURL (cmd), używając aplikacji chrome listonosz w systemie operacyjnym Windows 10
inny koder

47

Nie potrzebujesz INSOMNIA w przypadku, gdy serwer GraphQL odpowiada na Content-type: application/graphqllubpostman.setEnvironmentVariable ,

Po prostu to zrób:

Na karcie Nagłówki: Content-Type: application/graphql

Na karcie Treść, zaznaczone „nieprzetworzone”, wpisz zapytanie

wprowadź opis obrazu tutaj


Otrzymuję „Brak ciągu zapytania”, próbując tego
dima

1
U mnie działa idealnie! Używanie Node.js z zależnościami Express i Express-Graphql.
Brian


19

Jest na to prosty sposób. Użyj skryptu przed żądaniem, aby określić ładunek ( źródło ).

Krok 1.

W treści żądania umieść symbol zastępczy dla ładunku.

{
    "query":{{query}}
}

Krok 2.

Utwórz ładunek w skrypcie wstępnego żądania i zapisz go w zmiennej środowiskowej.

postman.setEnvironmentVariable("query", JSON.stringify(
`
{
  search(query: "test", type: ISSUE, first: 10) {
    issueCount
    edges {
      node {
        ... on Issue {
          title
          id
          state
          closed
          repository {
            name
          }
        }
      }
    }
  }
}
`
));

Otóż ​​to.


4
To działa jak urok i pozwala uniknąć kłopotów związanych ze wszystkimi ręcznymi krokami opisanymi w poprzednich odpowiedziach! Dziękuję Ci.
Alexis.Rolland

Musimy używać starszej wersji graphql lub mieć określoną konfigurację, ale w końcu zadziałało z powyższą propozycją i niewielką zmianą „body” zamiast „query”:> placeholder> {> „body”: {{query}}> }
darul75

11

AKTUALIZACJA 2:

To nie jest praktyczne użycie POSTMAN, ponieważ działają jeszcze w łatwy sposób, aby dodać nagłówki, co zajmuje dużo czasu, i myślę, że POSTMAN nie jest stworzony do naturalnej pracy z graphql,

postęp w tym zakresie możesz śledzić tutaj: https://github.com/postmanlabs/postman-app-support/issues/1669

Polecam skorzystać z innej wtyczki do pakietów, takiej jak:

the best (like postman , but profile and sync price 5$ monthly):
   https://insomnia.rest/
others:
   https://github.com/andev-software/graphql-ide
   https://github.com/imolorhe

dla graphiql (brak możliwości dodawania nagłówków) musisz ustawić trzy rzeczy (nie jest to łatwe do wpisania):

  1. Nagłówek:

    Content-Type: application / json

  2. Ciało:

    Wybierz Ray <optiongroup

    Wybierz JSON (application / json) <selectbox

  3. Utwórz obiekt javascript z „zapytaniem” i „wartością” zapytania wykresu. Podobnie jak w przypadku wszystkich obiektów w js, wymaga on właściwości i wartości, w tym przypadku „quote” jest własnością, wartość musi być ujęta w podwójne cudzysłowy. Wewnątrz wartości (ciąg graphl) nie tworzysz obiektów js, więc nie musisz używać podwójnych cudzysłowów, to tylko ciąg.

    {"query": "{allQuotes {tekst}}"}

    problem polega na tym, że musisz wpisać wszystko w jednej linii, nie jak grapIql ... istnieje wymóg wpisu na github listonosza, więc praca z graphql jest łatwa:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


11

AKTUALIZACJA 8-2019 - Wiem, że to jest stare, ale jeśli chodzi o POSTMANA, jeśli jeszcze tego nie rozgryzłeś, mają one opcję graphql (beta) do wysyłania treści. Nie ma potrzeby dodawania żadnych dodatkowych nagłówków.

wprowadź opis obrazu tutaj


9

Postman właśnie udostępnił wbudowaną obsługę GraphQL w wersji 7.2.

Ta wersja obsługuje

  • Wysyłanie zapytań GraphQL w treści żądania jako żądania POST
  • Wsparcie dla zmiennych GraphQL
  • Tworzenie API w Postman z typem schematu GraphQL
  • Automatyczne uzupełnianie zapytań zintegrowane ze zdefiniowanymi przez użytkownika schematami GraphQL

Spróbuj i przekaż nam swoją opinię na temat wątku śledzenia na naszym forum społeczności


8

Napotkałem ten sam problem, gdy próbuję użyć graphQlzapytania za pomocą POSTMAN, W POSTMAN wysyłam dane z rawzakładki z jsontypem.

Zapytanie:

{"query":"{user(id:902){id,username,DOB}}"}

Polecenie mutacji:

{ "query": "mutation {createMutations(reviewer:36, comments:\"hello\",data_id: 1659, approved: true ){id}}" }

       #commnent: String Type
       #data_id:Int Type
       #approved:Boolean Type


3

Na podstawie odpowiedzi Estevão Lucasa .

Możesz także użyć nagłówka Content-type: application/jsonna listonoszu

I zdefiniuj ciało:

{
    "query": "{ your_query }"
}

Można to łatwo skonstruować po stronie klienta, aby utworzyć ładunek żądania.

na przykład

wprowadź opis obrazu tutaj

Wynik:

wprowadź opis obrazu tutaj



0

Zamówienie https://github.com/hasura/graphqurl - curl dla GraphQL:

  • CLI do tworzenia zapytań GraphQL z autouzupełnianiem
  • Uruchom GraphiQL lokalnie na dowolnym punkcie końcowym (z niestandardowymi nagłówkami)
  • Użyj jako biblioteki z nodejs lub z przeglądarki
  • Obsługuje subskrypcje

Jestem jednym z autorów.

gq https://gentle-anchorage-72051.herokuapp.com/v1alpha1/graphql -i

GraphiQL z nagłówkami


-1

JEŚLI możemy przekazać typ nagłówka, następnie dodaj nagłówek Content-type: application / graphql

Poniższy link może służyć jako odniesienie: tutaj opis linku


-2

Dodając nagłówek możemy uruchomić zapytanie graphql w listonoszu

Content-type: application/graphql

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.