我已经用Nodejs和express创建了REST API,其他开发者将在前端使用ReactJS或PHP。
现在我也想在同一个项目中用EJS使用该API。是否可以在EJS中使用相同的API,如果可以,那么用EJS模板引擎调用该API的正确方法是什么?
有多种方式,你可以使用这个。你可以获取你的数据,并将值传递给视图。
因此,对于一个例子。
app.get('/', function (req, res) {
const users = await db.users.find({});
res.render('index', { users })
})
在这种情况下,index将是ejs模板 你可以呈现用户列表。
或者,你也可以使用javascript与你的模板,并调用你的API作为ajax调用。
最好的方法是调用你的 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 });
});
});