在 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 });
});
});
我已经用 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 });
});
});