node.js - 使用 Node.JS 进行 API 设计
问题描述
我正在设计一个带有 express/node 的 API,我想知道是否需要显式设置请求和/或响应的标头,还是自动处理?正如我刚刚阅读了以下有关 RESTFUL API 最佳实践的内容:
将 HTTP 标头用于序列化格式
客户端和服务器都需要知道用于通信的格式。格式必须在 HTTP-Header 中指定。
Content-Type 定义请求格式。Accept 定义了一系列可接受的响应格式。
https://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/
但是,我不确定这在实践中真正意味着什么。
app.delete('/LimeLINE/api/v1/users/delete/:boolean', (req, res) => {
let inactive;
try {
inactive = req.params.boolean
} catch (e) {
log('e', 'app.delete(/LimeLINE/api/v1/users/delete/:boolean - e - 291 : ' + e)
return res.status(500).send({
message: "INTERNAL SERVER ERROR"
})
}
//res.setHeader('Content-Type', 'application/json');
user.deleteInActive(inactive, res)
})
解决方案
如果您使用的是 Express,那么它已经为您做了很多工作。因此,您不需要在 header 中指定 content-type,因为它已经提供了方法并处理了大部分 header 部分 ex : res.json() ; 它已经将内容类型设置为 json。
在处理错误的情况下,您可以指定“状态”属性并将 HttpStatus 设置为 UNAUTHORIZED 、 INTERNAL_SERVER_ERROR 、 BAD_REQUEST 等。
所以你只需要使用内置的 express 函数来为你完成所有的工作。
推荐阅读
- python - Python:解析字符串时如何忽略特殊字符
- servicenow - 从服务目录订购商品时,如何获取服务中的变量值?
- javascript - 克服ajax页面刷新
- c# - 强制应用程序winform c#的一个实例
- c# - 为什么 Automapper 不继承 ForPath-ignores?
- javascript - Javascript 日期创建差异 - 在 IE 与 chrome 中
- ios - 检查App可以使用的iCloud Free Space
- python - 我正在尝试将 61 更改为十六进制,但我必须得到“3D”,但我有“313”。怎么了?
- vue.js - 如何在 PWA 模式下移除 Nuxt 加载页面
- vue.js - Vuejs - 引用的对象表示法