如何让API接口返回的内容直接显示在HTML源码代码里?关于这个问题,估计很多同学没去处理过,因为这个是关系到SEO爬虫是否会抓取到您的新闻列表。
如果您直接用API,然后通过接口去显示,正常您新闻部分的源代码里只有一个<div id="content"></div>的这样代码,看不到完整新闻列表,这样爬虫根本爬不到,所有您的内容不可能会被收录。
那么问题来了,如何把API返回的内容完全显示在HTML源码里呢?今天我们来分析下。
解决问题方案
要让API接口返回的内容直接显示在HTML源码中,可以使用服务器端渲染(Server-Side Rendering, SSR)的方式。这种方式下,页面的初始渲染是由服务器完成的,将渲染好的HTML直接返回给客户端,而不是仅返回数据让客户端自行渲染。
下面是一个简单的示例,使用Node.js和Express框架实现这种功能:
const express = require('express'); const fetch = require('node-fetch'); const app = express(); app.get('/data', async (req, res) => { try { // 调用API接口获取数据 const apiResponse = await fetch('https://api.example.com/v1/data', { headers: { 'Authorization': 'Basic your_base64_encoded_credentials' } }); const data = await apiResponse.json(); // 使用EJS模板引擎渲染HTML页面 res.render('index.ejs', { data: data }); } catch (error) { console.error('Error fetching data:', error); res.status(500).send('Error fetching data'); } }); app.set('view engine', 'ejs'); app.listen(3000, () => { console.log('Server is running on port 3000'); });
在这个示例中,我们使用express框架创建了一个Web服务器,并定义了一个/data路由。当用户访问这个路由时,服务器会调用API接口获取数据,然后使用ejs模板引擎渲染一个HTML页面,并将API返回的数据传递给模板。
下面是index.ejs模板的示例:
<!DOCTYPE html> <html> <head> <title>API Data</title> </head> <body> <h1>API Data</h1> <pre><code><%= JSON.stringify(data, null, 2) %></code></pre> </body> </html>
在这个模板中,我们使用<%= %>语法将API返回的数据直接输出到HTML中,并格式化为JSON字符串。
当用户访问/data路由时,服务器会执行上述代码,调用API接口获取数据,然后使用ejs模板引擎渲染HTML页面,最终将渲染好的HTML直接返回给客户端浏览器。这样,API返回的内容就会直接显示在HTML源码中。
注意
这种服务器端渲染的方式会增加服务器的负载,因为每次请求都需要调用API并渲染HTML。对于一些高并发或需要动态更新的场景,可以考虑使用客户端渲染(Client-Side Rendering)的方式,即先返回一个空的HTML页面,然后由客户端JavaScript代码异步获取数据并渲染到页面上。
网友评论文明上网理性发言 已有0人参与
发表评论: