2016-05-19 23 views
5

Obecnie próbuję uzyskać ciało żądania w kontekście, ponieważ część ciała zawiera JWT, który musi zostać odkodowany. Jednak gdy próbuję uzyskać następujące niezdefiniowana dla kontekstu:Jak przekazać treść żądania do kontekstu GraphQL?

app.use('/', graphqlHTTP((req) => ({ 
     schema: Schema, 
     context: req.body, 
     pretty: true, 
     graphiql: false 
    }))); 

I wylogować req i nie widzę tam ciało. Używam biblioteki o nazwie react-reach, dodaje następujące do ciała na życzenie:

{ 
     query: {...}, 
     queryParams: {...}, 
     options: { 
     token: '...' // <-- I'm passing the token into options 
     } 
    } 

wiem, że ciało jest interpretowane, ponieważ moje pytania/mutacji, które są w organizmie są interpretowane i wykonywane. Po prostu nie można go znaleźć, gdy przekazano go do kontekstu.

+2

Czuję, że o wiele łatwiej, jeśli umieścisz token w nagłówku, możesz to zrobić tak: http://docs.apollostack.com/apollo-server/tools.html#auth-tokens (Apollo Server jest tylko cienkim opakowaniem wokół Express-GraphQL) – stubailo

+0

Dobrze wypróbuję to, @stubailo –

+0

To zadziałało @stubailo –

Odpowiedz

2

Twoja req.body jest undefined, chyba że używasz dodatkowego oprogramowania pośredniczącego do obsługi analizatora treści. Z dokumentacji Express:

req.body

Zawiera pary klucz-wartość danych przedstawionych w ciele żądania. Domyślnie jest niezdefiniowany i jest zapełniany, gdy używasz oprogramowania pośredniczącego do przetwarzania treści, takiego jak parser ciała i multer. http://expressjs.com/en/api.html#req.body

graphqlHTTP robi to jest własne rzeczy do analizowania treści żądania (patrz here) i dlatego twoje pytania/mutacje pracują.

Dodawanie oprogramowania pośredniego (takiego jak analizator treści lub multer) do analizy treści żądania powinno być dostępne pod numerem req.body, a następnie kontekst powinien zostać wypełniony tym, czego szukasz.

Powiązane problemy