2015-12-07 8 views
10

मैं है निम्नलिखित कोड है जो काम करता है अच्छी तरह से काम कर रहा है के साथ:Aurelia Aurelia-फ़ेच-ग्राहक और JSON पोस्ट

import {inject} from 'aurelia-framework'; 
import {HttpClient, json} from 'aurelia-fetch-client'; 


@inject(HttpClient) 
export class Items { 
    heading = 'Items'; 
    apiKey = ""; 

    constructor(http) { 
    http.configure(config => { 
     config 
     .useStandardConfiguration() 
     .withBaseUrl('https://testme.com/api/') 
      .withDefaults({ 
      headers: { 
       'content-type': 'application/json', 
       'Accept': 'application/json', 
       'X-Requested-With': 'Fetch' 
      } 
      }) 
    }); 

    this.http = http; 
    } 

attach() { 

let auth = { 
    Username:"admin", 
    Password:"1234" 
}; 

return this.http.fetch('auth', { 
     method: 'post', 
     body: JSON.stringify(auth), 
     headers: { 
     'Content-Type': 'application/json', 
     'Accept': 'application/json' 
     } 
    }) 
    .then(response => response.json()) 
    .then(response => { 
     this.apiKey = response.APIKey; 
     console.log(response); 
}); 

हालांकि, अगर है जो json(auth) साथ body: JSON.stringify(auth) लाइन की जगह मैं JSON serialise करने का सही तरीका मानना ​​है कि ऑरेलिया JSON सहायक का उपयोग कर एक ऑब्जेक्ट, मेरी एपीआई एक बुरा अनुरोध फेंकता है।

वहाँ कुछ अलग है कि सहायक बनाम JSON.stringify करता है?

+0

अपनी वेबसाइट का डोमेन वही अपने एपीआई है? यदि ऐसा है, तो अपने कॉन्फ़िगर फ़ंक्शन में पूर्ण पथ (https: //) से छुटकारा पाने का प्रयास करें। मैं देख सकता हूँ कि किसी कारण के कारण अनुरोध शरीर जबकि अपने उदाहरण ठीक काम करता है अगर मैं एक स्थानीय अनुरोध करते हैं, संपूर्ण URL के साथ खाली हो जाता है ... – Mikhail

+0

कोई API एक अलग URL है, जो करता है वास्तव में मुझे एक CORS समस्या देने पर है, जिसे मैंने सफारी में समय के लिए अक्षम कर दिया है। – user1513388

+1

कृपया एक वेब प्रॉक्सी (उदा। फिडलर) चलाएं और देखें कि वास्तव में क्या होता है। फिर परिणाम अपने प्रश्न में जोड़ें। क्या आपने कभी अपना पोस्ट अनुरोध देखा है या शायद विकल्प विधि के साथ बस एक? – Mikhail

उत्तर

4

json फ़ंक्शन JSON.stringify को कॉल करता है, लेकिन हेडर पर Content-Type: application/json भी जोड़ता है। मैं सोच रहा हूं कि आपके लिए जो त्रुटि डाली गई है, वह पहले से मौजूद हेडर के कारण हो सकती है क्योंकि आप इसे स्पष्ट रूप से जोड़ रहे हैं।

कोशिश json फिर से उपयोग, लेकिन इस बार अपने कोड है कि उस सामग्री प्रकार जोड़ने के लिए हेडर को संशोधित करता है हटा दें।

कि json समारोह के लिए कोड के लिए यहाँ देखें: https://github.com/aurelia/fetch-client/blob/master/src/util.js

संबंधित मुद्दे