2017-12-11 12 views
1

Ich verwende Fetch API von react-native und ich verwende Typoskript. Mein Code sieht wie folgt aus:typescript Kann Fetch-API nicht mit reaktionseigenem Header hinzufügen

let responseLogin = await fetch('http://url_example', { 
     method: 'POST', 
     headers: {'Content-Type':'application/json'}, 
     body: requestBody 
    }); 

Aber ich bekomme die folgende Fehlermeldung, wenn der Header:

Argument of type '{ method: string; headers: { 'Content-Type': string; }; body: string; }' is not assignable to parameter of type 'RequestInit'. 
    Types of property 'headers' are incompatible. 
    Type '{ 'Content-Type': string; }' is not assignable to type 'Headers | string[][]'. 
     Object literal may only specify known properties, and ''Content-Type'' does not exist in type 'Headers | string[][]'. 

Ich habe auch versucht, einen benutzerdefinierten Header zu erstellen, aber ohne Erfolg:

let requestHeaders = new Headers(); 
     requestHeaders.set('Content-Type', 'application/json'); 
     // I have also tried adding this at the end but no luck 
     // requestHeaders.get('Content-Type'); 

Wie könnte ich einen Header hinzufügen? Weil ich keinen Weg finden kann, dies zu erreichen, und ich weiß nicht, was das Problem ist. Wenn ich diese im Postboten teste, bekomme ich eine 200 Antwort, hier bekomme ich eine 401 Antwort. Ich habe diese Bibliothek auch nur versucht, benutzerdefinierte Header hinzuzufügen: https://www.npmjs.com/package/fetch-headers

Ich benutze: Visual Studio Code 1.81.1 "reagieren-native": "0.50.0", "Typoskript": „2.6.1 "

+0

müssen alle Anmeldeinformationen gesendet werden? – Niladri

+0

haben Sie versucht mit 'headers: { Akzeptieren: 'application/json', 'Content-Type': 'application/json', }' in der 'fetch' api – Niladri

+0

müssen Sie möglicherweise' credentials: ' Include "in der Abrufanforderung, wenn Sie Anmeldeinformationen senden – Niladri

Antwort

1

ich so gelöst haben das Problem:

let requestHeaders: any = { 'Content-Type': 'application/json' }; 
let responseLogin = await fetch('URL', { 
      method: 'POST', 
      headers: requestHeaders, 
      body: requestBody 
     } 
     ); 

Alles, was ich tun musste, war, dass zu ignorieren Fehlermeldung, weil JS die Syntax korrekt interpretiert, nur Typoskript nicht und ich habe das getan, indem ich eine Variable erstellt habe, in der ich diese beiden Strings gespeichert habe.

0

Welche TypeScript-Bibliotheken verwenden Sie mit Ihrem Build? Es scheint, dass Ihre Definition für die headers Eigenschaft falsch ist. In Typoskript 2.6.2, die headers Eigenschaft vom Typ ist HeadersInit, die wie folgt definiert ist: type HeadersInit = Headers | string[][] | { [key: string]: string };

+0

Ich habe versucht, die Header wie folgt hinzuzufügen: headers: [['Content-Type'], ['application/json']]. Dennoch gibt es einen Status von 401. –

+0

Ich habe auch diese Bibliothek versucht: https://www.npmjs.com/package/fetch-headers –

Verwandte Themen