Подтвердить что ты не робот

Aurelia aurelia-fetch-клиент и с JSON POST

У меня есть следующий код, который работает хорошо работает:

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

Однако, если заменить строку body: JSON.stringify(auth) на json(auth), и я считаю, что правильный путь к JSON сериализует объект с помощью помощника Aurelia JSON, мой API вызывает плохой запрос.

Есть ли что-то другое, что помогает хелпер против JSON.stringify?

4b9b3361

Ответ 1

Функция json вызывает JSON.stringify, но также добавляет Content-Type: application/json в заголовки. Мне интересно, может ли ошибка, возникшая для вас, быть из-за уже существующего заголовка, поскольку вы явно добавляете его.

Попробуйте снова использовать json, но на этот раз удалите свой код, который изменяет заголовки, чтобы добавить этот Content-Type.

Смотрите здесь код для этой функции json: https://github.com/aurelia/fetch-client/blob/master/src/util.js