这是一个使用MCP服务器规范和TypeScript构建的模块化、可扩展的新闻聚合后端。此API提供了一个统一的接口来访问TheNewsAPI中的当前和历史新闻文章,并具有高级过滤功能。该API特别设计用于供AI代理消费,优先考虑结构化数据和一致的模式。
| 端点 | 描述 | 示例 |
|---|---|---|
/api/news/top | 获取顶级新闻头条 | /api/news/top?categories=business |
/api/news/all | 获取所有新闻并进行高级搜索 | /api/news/all?search=technology |
/api/news/similar/:uuid | 获取与特定文章相似的文章 | /api/news/similar/cc11e3ab-ced0-4a42-9146-e426505e2e67 |
/api/news/uuid/:uuid | 根据UUID获取特定文章 | /api/news/uuid/cc11e3ab-ced0-4a42-9146-e426505e2e67 |
/api/news/sources | 获取可用的新闻来源 | /api/news/sources?language=en |
| 端点 | 描述 | 示例 |
|---|---|---|
/api/cache/stats | 获取缓存统计信息 | /api/cache/stats |
/api/cache/clear | 清除所有缓存 | DELETE /api/cache/clear |
/api/cache/clear/:type | 按类型清除缓存 | DELETE /api/cache/clear/top |
| 端点 | 描述 |
|---|---|
/health | 健康检查端点 |
/docs | 交互式API文档 |
/docs.json | OpenAPI规范 |
/examples | 使用示例 |
该项目实施了多层次测试策略,以确保可靠性和正确性。
单元测试
控制器测试
集成测试
该项目遵循以下测试最佳实践:
# 运行所有测试
npm test
# 运行带覆盖率的测试
npm run test:coverage
# 运行特定测试文件
npx jest path/to/test.ts
# 克隆仓库
git clone <repository-url>
# 安装依赖
npm install
# 设置环境变量
cp .env.example .env
# 编辑.env文件,添加自己的API密钥和数据库URL
# 生成Prisma客户端
npx prisma generate
# 构建项目
npm run build
# 启动服务器
npm start
创建一个包含以下变量的.env文件:
# 新闻聚合API环境变量
# API配置
NEWS_API_TOKEN=your_api_token_here
# 服务器配置
PORT=3000
NODE_ENV=development
# 数据库配置
DATABASE_URL="file:./dev.db"
应用程序默认使用Prisma ORM和SQLite。DATABASE_URL环境变量应指向您的数据库文件。对于生产环境,您可以将其配置为使用PostgreSQL或MySQL。
# 在开发模式下运行,启用热重载
npm run dev
# 运行代码检查
npm run lint
# 运行测试
npm test
项目包括一个使用Jest和Supertest构建的综合测试套件,覆盖API端点、数据库集成和服务器连接检查。
# 运行所有测试
npm test
# 只运行API端点测试
npm run test:api
# 只运行数据库集成测试
npm run test:db
# 运行带覆盖率报告的测试
npm run test:coverage
# 在监视模式下运行测试(适用于开发)
npm run test:watch
# 检查服务器连接
npm run check-server
src/__tests__/api/,这些测试验证所有API端点返回预期响应,正确处理错误,并应用适当的过滤。src/__tests__/database.test.ts,这些测试验证数据库连接、查询执行和事务支持。scripts/check-server.ts,此脚本测试到正在运行的服务器实例的连接,验证关键端点是否正常工作。测试使用通过设置NODE_ENV=test指定的单独环境配置。这确保测试不会干扰开发或生产环境。设置包括:
缓存系统
数据持久层
API文档
API现在包括使用OpenAPI/Swagger的综合文档:
/docs访问/docs.json可用/examples可用,附有多语言代码示例npm run dev或npm start启动服务器http://localhost:3000/docs查看交互式Swagger UIhttp://localhost:3000/examples参考实现示例身份验证和用户管理
速率限制
监控和分析
内容处理
个性化
Webhook和实时更新
欢迎对新闻聚合API项目的贡献!该项目旨在成为对MCP服务器架构感兴趣的友好且文档齐全的代码库,特别是考虑到AI消费。
git checkout -b feature/amazing-feature)npm test)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)请遵循项目中的现有代码风格和模式。此项目使用ESLint进行代码质量和格式化。
在贡献时,请确保:
所有新功能都应包括适当的测试。请遵循项目中的现有测试模式。
git checkout -b feature/my-new-featuregit commit -am 'Add some feature'[git push origin feature/my-new-feature](git push origin feature/my-new-feature)ISC