使用 'admin-on-rest/lib/util/HttpError' 中的“HttpError”是否安全?
Is it safe to (can I) use `HttpError` from 'admin-on-rest/lib/util/HttpError'?
我的 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);
}
//...
但是我觉得直接通过'admin-on-rest/lib/util/HttpError'
而不是'admin-on-rest'
访问HttpError
是不安全的,因为如果内部实现发生变化(或者内部[=41进行了重构) =] 框架等)我的实施将失败。
我不能做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'
?
- 如果没有,是否还有其他选择?
一个简单(呃)和安全(呃)的替代方案可以只是 not 到 use HttpError
完全没有。
而是使用 简单对象 作为参数执行 Promise.reject
,其中包含 message
和 status
属性,如下所示:
//...
return response.text().then(text => {
return Promise.reject({message: text || statusText, status: status});
});
//...
我的 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);
}
//...
但是我觉得直接通过'admin-on-rest/lib/util/HttpError'
而不是'admin-on-rest'
访问HttpError
是不安全的,因为如果内部实现发生变化(或者内部[=41进行了重构) =] 框架等)我的实施将失败。
我不能做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'
? - 如果没有,是否还有其他选择?
一个简单(呃)和安全(呃)的替代方案可以只是 not 到 use HttpError
完全没有。
而是使用 简单对象 作为参数执行 Promise.reject
,其中包含 message
和 status
属性,如下所示:
//...
return response.text().then(text => {
return Promise.reject({message: text || statusText, status: status});
});
//...