13

怎样从 Express API 发送一致的错误响应

 3 years ago
source link: https://www.infoq.cn/article/DKuFPQzNW2XHNlwIzHg1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者 | Simon Plenderleith 译者 | 王强策划 | 李俊辰

使用 Express 构建 API 时,可能很难知道如何发送一致的错误响应。这个框架似乎并未为此提供什么特殊功能,因此你需要自己去解决问题。某些时候,你可能会想知道自己是否在以“正确的方式”操作。

正如我在《使用 Express 构建现代 API 的 5 种最佳实践》博客文章中提到的那样:

构建 API 来发明自己的错误响应格式是非常诱人的,但是 HTTP 响应状态代码是一个很好的起点,因为它们可以传达特定的错误状态。

如果你发明了自己的格式,就必须在 API 中构建一堆额外的逻辑,并且你可能还要确保对它们进行了全面的测试。没有人想在错误响应代码中还看到错误,不是吗?最重要的是,它也需要客户端,例如前端 JavaScript,来实现用于处理 API 错误响应特殊格式的额外代码。

如果有一种更简单的方法,一种经过实践检验的标准方法来发送错误响应,那岂不是很好吗?幸运的是,这种方法是存在的!HTTP 标准定义了状态代码,你可以在 API 响应中使用这些状态代码来指示请求是否成功,或是否发生了错误。

下面是一个 HTTP 错误响应示例,带有 400 状态代码,指示来自客户端的“错误请求”(Bad Request):

< HTTP/1.1 400 Bad Request

< Content-Type: text/html; charset=utf-8

< Content-Length: 138

< Date: Wed, 28 Oct 2020 20:11:07 GMT

复制代码

如果要发送这样的错误响应,可以使用 Express 的 res.status() 方法:

res.status(400).end();

复制代码

遵循 HTTP 标准


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK