当前位置: 首页 > 面试题库 >

获取:使用JSON错误对象拒绝Promise

林华皓
2023-03-14
问题内容

我有一个HTTP API,无论成功还是失败,它都会返回JSON数据。

失败示例如下所示:

~ ◆ http get http://localhost:5000/api/isbn/2266202022 
HTTP/1.1 400 BAD REQUEST
Content-Length: 171
Content-Type: application/json
Server: TornadoServer/4.0

{
    "message": "There was an issue with at least some of the supplied values.", 
    "payload": {
        "isbn": "Could not find match for ISBN."
    }, 
    "type": "validation"
}

我想要在JavaScript代码中实现的是这样的:

fetch(url)
  .then((resp) => {
     if (resp.status >= 200 && resp.status < 300) {
       return resp.json();
     } else {
       // This does not work, since the Promise returned by `json()` is never fulfilled
       return Promise.reject(resp.json());
     }
   })
   .catch((error) => {
     // Do something with the error object
   }

问题答案:
 // This does not work, since the Promise returned by `json()` is never

fulfilled
return Promise.reject(resp.json());


好吧,resp.json诺言 得到兑现,只是Promise.reject不等待它,而是立即 兑现诺言

我假设您宁愿执行以下操作:

fetch(url).then((resp) => {
  let json = resp.json(); // there's always a body
  if (resp.status >= 200 && resp.status < 300) {
    return json;
  } else {
    return json.then(Promise.reject.bind(Promise));
  }
})

(或明确写出)

    return json.then(err => {throw err;});


 类似资料:
  • 问题内容: 我正在尝试从json文件读取。 这是我创建文件的方式: 这是我输出的开始: 当我尝试使用以下代码读取同一文件时: 我得到错误 我不明白,因为我可以像往常一样崇高地打开文件。我该如何处理? 使用以下代码解决了该问题: 问题是我混合了转储和负载。现在我正在使用转储和加载 问题答案: 用于加载文件。与字符串一起使用。

  • 我在负载平衡器后面有web服务器,系统成功地将我重定向到OKTA登录页面,当我输入凭据时,并在OKTA服务器执行回调操作时单击登录按钮,使用 我得到一个错误: 403-禁止:拒绝访问。您没有使用提供的凭据查看此目录或页的权限。 我在Startup.cs文件中使用下面的代码,我在Blazor服务器上的应用程序

  • 我不断收到任务拒绝错误,即使它成功地完成了任务。 2018-03-27 05:57:37518 454935266[task-scheduler-5]错误o.s.i.handler。LoggingHandler-org。springframework。果心任务TaskRejectedException:Executor[java.util.concurrent。ThreadPoolExecutor

  • 现在为了实现这一点,我使用了几个教程。以下是课程: 主类:(包括MessageSource和LocalValidatorFactoryBean) 控制器类: 我如何理解这个要求,我想显示的不是“errorcode”:“notempty” 从CustomerDTO Class?

  • 我有两个问题: 如何使用spring RestTemplate映射JSON对象列表。 如何映射嵌套的JSON对象。 我正在尝试使用https://bitpay.com/api/rates,方法是按照http://spring.io/guides/gs/consource-rest/的教程学习。

  • 我用的是swapi。在Spring Boot中获取应用程序数据的dev API。我需要用一个行星的名字来获取它的信息。因此,我使用下一个url:https://swapi.dev/api/planets/?search=Tatooine.JSON结果如下所示: 现在,在Java中,我使用服务中的下一个代码: 我只需要得到结果的数组,但是,我如何从对象得到结果的数组?