在 Node 和 Express 中休息 API,与 ejs 和 React.js 一起使用

Rest API in Node and Express, use with ejs and React.js

我已经用 Nodejs 和 express 创建了 REST API,它将被 ReactJS 使用或 PHP 在前端被其他开发人员使用。

现在我还想在与 EJS 相同的项目中使用 API。是否可以将相同的 APIs 与 EJS 一起使用,如果是,那么使用 EJS 模板引擎调用 APIs 的正确方法是什么?

您可以通过多种方式使用它。您可以获取数据并将值传递给视图。

举个例子:

app.get('/', function (req, res) {
  const users = await db.users.find({});
  res.render('index', { users })
})

在这种情况下,索引将是您可以在其中呈现用户列表的 ejs 模板。

或者,您也可以将 javascript 与您的模板一起使用,并将您的 API 作为 ajax 调用来调用。

解决此问题的最佳方法是从 router/controller 调用您的 API 并为视图传递一个带有局部变量的对象。

假设您有一个如下所示的模板:

<!-- views/posts.ejs -->
<div>
  <% items.forEach(function(item) { %>
    <ul>
      <li><%= item.userId %></li>
      <li><%= item.id %></li>
      <li><%= item.title %></li>
      <li><%= item.body %></li>
    </ul>
  <% }); %>
</div>

然后,在您的路由处理程序中,您将执行以下操作:

const express = require("express");
const app = express();

app.route("/posts")
  .get(function (req, res) {
    axios
      .get("https://jsonplaceholder.typicode.com/posts")
      .then(function (result) {
        res.render("posts", {
          items: result.data
        });
      })
      .catch(function (error) {
        // handle errors appropriately
        res.render("error", { error });
      });
  });