2016-09-09 54 views
1

我有一个应用程序使用Aurelia创建。我希望简化http响应。Aurelia http-fetch句柄错误

我都去下面的代码:

@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.okfalse响应结果是:

Object { status: 422, data: Promise } 

我怎样才能解决这个问题?

回答

0

假设您的问题是返回的对象中缺少数据,并且错误返回Promise,那么您将需要等待从json()返回的promise先解析。喜欢的东西:

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