2016-09-09 5 views
1

У меня есть приложение, которое я создаю с использованием Aurelia. Я хочу упростить ответы на http.Ошибка Aurelia http-fetch error

Я де следующий код:

@inject(HttpClient) 
export class Api { 
    constructor(httpClient) { 
    this.http = httpClient; 
    this.http.configure(config => { 
     config 
     .withBaseUrl(window.sessionStorage.getItem('baseUrl')) 
     .withDefaults({ 
      headers: { 
      'Accept': 'application/json', 
      'X-Requested-With': 'Fetch' 
      } 
     }) 
     .withInterceptor({ 
      request: handleRequest, 
      response: handleResponse 
     }); 
    }) 
    } 

    get(url, params) { 
    return this.http.fetch(url, {method: 'get', body: params}); 
    } 

    post(url, params) { 
    return this.http.fetch(url, {method: 'post', body: params}); 
    } 
} 

function handleResponse(response) { 
    if (!response.ok) { 
    thown {status: response.status, data: rsponse.json() };//this not works 
    } 
    return response.json(); 
} 

function handleRequest(request) { 
    let token = window.sessionStorage.getItem('token'); 
    if (token) { 
    request.headers.append('Authorization', `bearer ${token}`); 
    } 
    return request; 
} 

Когда response.ok является false результаты ответа является:

Object { status: 422, data: Promise } 

Как я могу решить эту проблему?

ответ

0

Предполагая, что ваша проблема в том, что данные отсутствуют в возвращаемом объекте, а Promise возвращается при ошибке, вам нужно будет дождаться обещания, возвращенного из json(), для разрешения в первую очередь. Что-то вроде:

if (!response.ok) { 
 
    response.json().then(data => { 
 
    return {status: response.status, data: data}; 
 
    } 
 
}

Смежные вопросы