小编Jak*_*kob的帖子

如何使用express默认以JSON而不是HTML形式返回错误?

Express 默认以 HTML 页面形式返回错误。在开发 REST api 时,我希望所有错误都采用 JSON 格式。我如何为此配置快递?

我希望响应看起来像这样

{
  "statusCode": 404,
  "error": "Not Found"
}
Run Code Online (Sandbox Code Playgroud)

但我得到了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>
<body>
    <pre>Cannot DELETE /object/</pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的基本应用

export const app = express();
app.use(express.json());

app.get("/objects", listObjects);
app.get("/object/:id", getObject);
app.post("/object", createObject);
app.put("/object/:id", updateObject);
app.delete("/object/:id", deleteObject);
Run Code Online (Sandbox Code Playgroud)

更新:澄清一下,这不是我想作为 json 处理的处理程序的错误。这样做非常简单。

我所追求的是让 express 停止为未注册的处理程序返回 html 错误,例如在 /assessments 上执行 DELETE,或在 /anUnknownRoute 上执行 GET

node.js express

22
推荐指数
2
解决办法
9624
查看次数

嵌套对象的打字稿字符串点表示法

我有一个嵌套的翻译字符串对象,如下所示:

viewName: {
    componentName: {
        title: 'translated title'
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用一个接受点表示法字符串的翻译库来获取字符串,就像这样translate('viewName.componentName.title')

有什么方法可以强制 translate 的输入参数遵循带有打字稿的对象的形状吗?

我可以通过这样做为第一级做到这一点:

translate(id: keyof typeof languageObject) {
    return translate(id)
}
Run Code Online (Sandbox Code Playgroud)

但我希望这种类型是嵌套的,这样我就可以像上面的例子一样确定我的翻译范围。

typescript

5
推荐指数
2
解决办法
3189
查看次数

标签 统计

express ×1

node.js ×1

typescript ×1