aa9cf128d55ab11a3be60199f4a854b24c7defc4
News Service
独立新闻微服务,负责周期性从 Naver Stock 新闻接口拉取新闻并落盘为 JSON 文件,再通过 HTTP 接口提供给前端。
功能
- 每小时自动刷新一次新闻数据
- 启动时自动预热数据
- 使用 JSON 文件作为存储,每个分类一个文件
- 提供按分类查询、全部分类查询、手动刷新接口
- 支持 Docker 和 Docker Compose 部署
分类
- flashnews
- mainnews
- ranknews
- worldnews
目录
news_service/
data/
flashnews.json
mainnews.json
ranknews.json
worldnews.json
src/
app/
config/
controllers/
core/
repositories/
services/
本地启动
- 配置环境变量
# 可直接修改 .env.example,服务会自动读取
# 或者复制一份 .env 覆盖默认配置
cp .env.example .env
- 安装依赖
npm install
- 启动服务
npm start
默认地址:http://localhost:3100
接口
健康检查
GET /health
获取分类列表
GET /api/news/categories
获取指定分类新闻
GET /api/news?category=flashnews&limit=10
GET /api/news/flashnews?limit=10
兼容前端现有 NewsAPI 调用
GET /v2/everything?q=flashnews&language=ko&pageSize=10&page=1
GET /v2/top-headlines?category=mainnews&country=ko&pageSize=10
返回结构与前端当前使用的 NewsAPI 结构保持一致:
{
"status": "ok",
"totalResults": 10,
"articles": []
}
获取全部分类新闻
GET /api/news/all?limit=10
手动刷新
POST /api/news/refresh
POST /api/news/refresh?category=flashnews
Docker
docker compose up -d --build
如果前端和新闻服务需要一起对外提供访问,建议在项目根目录使用组合编排:
cd /Users/wjp/Projects/juYou
docker compose -f docker-compose.news-stack.yml up -d --build
这样前端容器中的 Nginx 会把同源路径 /newsapi/* 代理到容器网络中的 news-service:3100,浏览器不会直接访问外部新闻接口,因此不会触发跨域限制。
前端接入建议
前端如果继续使用原来的 /newsapi/v2/* 请求方式,只需要把代理目标指向本服务即可,不需要修改新闻请求代码。
Description
Languages
JavaScript
99.5%
Dockerfile
0.5%