res.send 和 app.post 有什么区别?

What’s the difference between res.send and app.post?

我是 express 和 HTTP 的新手。快递库有app.get、app.post和res.send。据我了解,app.get uses/is 与 GET 和 app.post POST 一起使用。 res.send 会打电话给 POST 吗?

那是两个不同的modules/objects..

Express Router 支持服务器侦听和响应的 HTTP 方法 - .get().post().put().

通过中间件和处理程序链传递的参数之一是 Response,它有一个 .send() 方法将其响应发送回客户端。 Response对象也可以增强发送JSON等

res.send() 对进入您的 http 服务器的传入 http 请求发送响应。

app.post() 为您的 http 服务器中的特定 URL 和 POST 请求向 Express 注册请求处理程序,以便当您的 Express 服务器收到 POST 请求时在那个 URL,它将调用这个请求处理程序。

这里有一个 res.send() 的例子:

// configure request handler for GET request to /
app.get("/", (req, res) => {
    res.send("hi");               // send response to incoming http request
});

这里有一个 app.post() 的例子:

// this middleware reads and parses the body for content-type
// of  application/x-www-form-urlencoded
app.use(express.urlencoded({extended: true}));

// configure request handler for POST request to /login
app.post("/login", (req, res) => {
     // in a real request handler, this would be some sort of username
     // and password comparison in a database and using appropriate crypto
     if (req.body.username === "John" && req.body.password === "foobar99") {
         res.send("login successful");
     } else {
         res.status(401).send("Login failed");
     }
});

The express library has res.get and res.send. As I understand it, res.get uses / is used with GET.

您可能感到困惑,因为没有 res.get。也许你的意思是 app.get()?如果是这样,app.get() 为特定 URL 的 http GET 请求配置请求处理程序。因此,app.get("/books", ...) 可能会显示所有可用书籍的页面。

Does res.send call POST?

没有。 res.send() 发送对 HTTP 请求的响应。

以下是您能想到的步骤。

  1. 一个 http 客户端(例如浏览器或任何代码)创建一个 http 请求并将该请求发送到服务器。

  2. 该请求将同时包含一个 HTTP 动词,例如 GET、POST、PATCH 等...,并且将包含一个 URL,例如 /login/books.

  3. 请求被发送到的 Web 服务器接收该请求。对于使用 Express 框架的 Web 服务器,Express 服务器会查看其已注册路由的列表(这些路由之前已注册 app.get(...)app.post(...)app.use(...) 等。 .. 这些本质上是特定路由的侦听器。如果 Express 服务器发现已注册的路由同时匹配 http 请求动词和 URL,则它会调用该路由处理程序并向其传递三个参数 (req, res, next) .

  4. 当调用请求处理程序代码时,它可以检查 req object 以查看有关传入请求的任何数据,例如确切的 URL,请求中的任何 http headers 等等。它可以使用 res object 发送响应,例如在响应上设置任何 http headers,设置 content-type,为响应设置 http 状态代码,创建和发送响应的 body 等... res.send() 是发送响应的一种方式。还有其他如res.sendFile()res.json()res.sendStatus()等...

  5. 调用这些方法之一发送响应后,底层引擎将该 http 响应发送回发送原始 http 请求的客户端,并且 HTTP request/response 被视为完成。