javascript - 我想使用 nodejs 从 API 生成动态站点地图并表达
问题描述
我想从 API 生成动态站点地图。这是我为路由器编写的代码。我不熟悉nodejs。谁能告诉我可以用于生产吗?
const express = require('express')
const fetch = require('node-fetch');
const CLIENT = require('../../config/index')
const { SitemapStream } = require('sitemap')
const { createGzip } = require('zlib')
const router = express.Router()
require('dotenv').config()
// GET events
router.get('/sitemap.xml', async (_, res) => {
// headers
res.header('Content-Type', 'application/xml');
res.header('Content-Encoding', 'gzip');
// sitemap
try {
const data = await fetch('https://jsonplaceholder.typicode.com/posts')
const json = await data.json()
const smStream = new SitemapStream({ hostname: CLIENT[process.env.CLIENT] })
const pipeline = smStream.pipe(createGzip())
// pipe your entries or directly write them.
for (let index = 0; index < json.length; index++) {
smStream.write({ url: '/page-1/' + json[index].id, changefreq: 'daily', priority: 0.3 })
}
smStream.end()
// stream write the response
pipeline.pipe(res).on('error', (e) => {throw e})
} catch (e) {
console.error(e)
res.status(500).end()
}
})
module.exports = router
这是路由器代码。请告诉我。
解决方案
推荐阅读
- python - 如何将子列表切片到给定长度?
- python - Kafka confluent proxy api - send message - Internal server error
- azure-functions - 看似有效的 cron 表达式更改会触发“Microsoft.Azure.Storage.Common:找不到有效的帐户信息组合”。
- java - Gradle 中的依赖排除
- android - 从另一个类传递和调用函数 - 代表?
- flutter - 当我尝试运行颤振医生 --android-licenses 时出错
- reactjs - React Navigation (native) V5:深色主题的问题。抽屉导航器切换按钮不与背景形成对比。包括截图
- javascript - Firebase 实时数据库 - 客户端无权访问所需数据
- tensorflow - 您能否澄清分类问题中“一次性编码标签以使用 MSE”背后的逻辑
- php - Symfony CLI 在运行“new”命令时没有使用正确的 PHP 版本