使用 '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

一个简单(呃)和安全(呃)的替代方案可以只是 notuse HttpError 完全没有。

而是使用 简单对象 作为参数执行 Promise.reject,其中包含 messagestatus 属性,如下所示:

//...
return response.text().then(text => {
  return Promise.reject({message: text || statusText, status: status});
});
//...