(我可以)从'admin-on-rest / lib / util / HttpError'中使用`HttpError`是否安全?

问题描述 投票:3回答:1

我的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'
  • 如果不是,那还有其他选择吗?
admin-on-rest
1个回答
1
投票

一个简单的(呃)和安全(呃)替代方案可能就是根本不使用HttpError

相反,Promise.reject用一个简单的对象作为参数,它包含一个像这样的messagestatus属性:

//...
return response.text().then(text => {
  return Promise.reject({message: text || statusText, status: status});
});
//...
© www.soinside.com 2019 - 2024. All rights reserved.