微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决res.send 和 app.post 有什么区别?

我是 express 和 HTTP 的新手。 express 库有 app.get、app.post 和 res.send。据我了解,app.get 使用/与 GET 和 app.post POST 一起使用。 res.send 会调用 POST 吗?

解决方法

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

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

以下是 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",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");
     }
});

express 库有 res.get 和 res.send。据我了解,res.get 使用 / 与 GET 一起使用。

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

res.send 是否调用 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 对象以查看有关传入请求的任何数据,例如确切的 URL、请求中的任何 http 标头等。它可以使用 res 对象发送响应,例如在响应上设置任何 http 标头、设置内容类型、为响应设置 http 状态代码、创建和发送响应正文等。 . res.send() 是发送响应的一种方式。还有其他的,例如res.sendFile()res.json()res.sendStatus()等等...

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

,

那是两个不同的模块/对象..

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。