404ハンドラは、一般的に次のようになります。
app.use(function(req, res, next) {
res.status(404).sendFile(localPathToYour404Page);
});
あなたはこれだけあなたが登録し、最後のルート作り、それを取得します他のルートが要求を処理していない場合に呼び出されます。
これは、DELETEなどサポートしていないメソッドも検出します。リクエストされたものに基づいてレスポンスをカスタマイズしたい場合は、上記のハンドラの中に必要な検出コードとカスタマイズコードを置くことができます。
app.use(function(req, res, next) {
let obj = {success: false};
if (req.method === "DELETE") {
obj.msg = "DELETE method not supported";
} else {
obj.msg = "Invalid URL";
}
res.status(404).json(obj);
});
いくつかの参照:
あなたの応答がJSONであれば、
app.use(function(req, res, next) {
if (req.method === "DELETE") {
res.status(404).sendFile(localPathToYour404DeletePage);
} else {
res.status(404).sendFile(localPathToYour404Page);
}
});
をまたは:あなたはDELETE要求を検出したい場合
たとえば、あなたがこれを行うことができますExpress FAQ: How do I handle 404 responses?
Express Custom Error Pages
そして、あなたはそれでいる間、あなたはおそらくあまりにもExpress error handlerに置く必要があります。
// not that this has four arguments compared to regular middleware that
// has three arguments
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});
これはあなたのミドルウェアのいずれかでエラーが発生し、next(err)
と呼ばれるケースを処理することができます。
サポートされていないメソッドの場合と同様に、404のケースで何をしたいのかを具体的に説明する必要があります(最後のケースでは、URLの汎用性がある場合や、別の動作異なるURLの場合)。 – jcaron
@jcaron、私は両方のための2つの動作をしたいと思います。 404の場合、私はすべての応答メッセージを返します。サポートされていないリクエストの場合も同じです。 –