我的API提供程序将response.body
中的错误消息作为纯文本发送到ReadableStream,我需要让admin-on-rest向最终用户显示这些消息。
我打算这样做:
import HttpError from 'admin-on-rest/lib/util/HttpError'
import _ from 'lodash';
function handleError(response) {
if (_.isFunction(response.text)) {
const statusText = response.statusText;
const status = response.status;
return response.text().then(text => { // get the text from the ReadableStream
return Promise.reject(new HttpError( text || statusText, status));
});
} else { throw new Error(response.statusText); }
}
在我的自定义REST客户端中
//...
if (response.status < 200 || response.status >= 300) {
return handleError(response);
}
//...
但我觉得直接通过HttpError
的'admin-on-rest/lib/util/HttpError'
访问'admin-on-rest'
是不安全的,因为如果内部实现发生变化(或者框架的内部类的重构等),我的实现将失败。
我不能做import HttpError from 'admin-on-rest/lib/util/HttpError'
因为它不起作用。我得到__WEBPACK_IMPORTED_MODULE_0_admin_on_rest___default.a is not a constructor
HttpError
是否安全:import HttpError from 'admin-on-rest/lib/util/HttpError'
?一个简单的(呃)和安全(呃)替代方案可能就是根本不使用HttpError
。
相反,Promise.reject
用一个简单的对象作为参数,它包含一个像这样的message
和status
属性:
//...
return response.text().then(text => {
return Promise.reject({message: text || statusText, status: status});
});
//...