在Express中,router.METHOD()和router.route()方法有什么区别?

7

我见过两种写法的代码。

router.get(path, callback)

并且

router.route(path).get(callback)

从周围的代码来看,它们看起来是等价的。文档在这里:

router.route

router.METHOD

方法可以是getpost等。

为什么有两种方法来做这件事?我读了文档,但并没有太大帮助。

3个回答

6

router.METHOD(path)

router.methods() 在 Express 中提供路由功能,其中 METHOD 是 HTTP 方法之一,例如 GET、PUT、POST。

router.get(path,callback);

router.route(path)

返回一个单一路由的实例,您可以使用它来处理HTTP方法。

同时避免重复路由命名和输入错误。

因此,使用该实例,您可以一次性定义所有http处理程序,例如:

router.route(path).get(callback).put(callback).post(callback).delete(callback);

1
这只是Express提供的router对象的两种方法之一。据文档显示,总共有五种与router对象相关的方法。
由于您特别要求了router.METHOD()和router.route(),所以我将只关注这两种方法。
首先,让我们先看router.MEHTOD()方法。它只是将传入的请求与提供的路径进行匹配,并根据使用的METHOD执行相应的操作。METHOD是HTTP方法之一,例如get、put、post等。然而,问题在于有时候处理这样不同的命名约定会变得繁琐,可能会导致重复的路由命名,最终在处理大型和复杂的应用程序时会使事情变得混乱。
然而,在router.route()方法的情况下,它返回提供路径的单个路由实例,然后可以与http动词一起使用。它重用了提供的路径,避免了混淆,使代码看起来更清晰,因此出错的可能性更小。

0

我总是使用router.METHOD(path, callback)

所以一种方法,一个路径,由一个回调处理。

你命名的第二个方法可以有一个路径来处理多种方法。

所以你可以在路径/user上同时拥有getpost方法。

如果你想设置像这样的 CRUD 路由:

enter image description here

我建议您使用router.METHOD(path, callback)方法,因为您想要每个路由都有唯一的路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接