天气信息API服务

一个基于OpenWeatherMap API的RESTful天气信息服务器,提供全球城市当前天气和5天天气预报,支持多语言描述和JSON格式数据。

  • by erikoono
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 erikoono/weather-mcp-server

使用说明

🌤️ 天气信息API服务器

此项目包括:OpenWeatherMap API使用提供天气信息RESTful API服务器。你可以获取全世界城市目前的天气信息和天气预报。

✨ 机能

  • 🌤️ 获取当前天气信息
  • 🌡️ 气温、体感温度、湿度、风速等详细信息
  • 🌍 全球城市响应
  • 🇯🇵 日语天气说明
  • 📊 JSON形式的数据提供
  • 🔮 五天天气预报
  • 🚀 CI/CD管线(GitHub Actions)
  • 🐳 Docker対応
  • ☁️ Vercel部署就绪

安装,安装

1.安装相关性

npm install

2.设置环境变量

.env创建文件,然后单击OpenWeatherMap API请设置键:

cp env.example .env

.env编辑文件,然后单击OpenWeatherMap API设置键:

OPENWEATHER_API_KEY=your_api_key_here

3. OpenWeatherMap API获取密钥

  1. OpenWeatherMap访问
  2. 创建帐户
  3. API获取密钥
  4. .env设置为文件

4.构建

npm run build

5. 実行

npm start

在开发模式下运行时:

npm run dev

API 端点

服务器信息

GET /

返回服务器的基本信息和可用端点。

当前天气信息

GET /weather/:city

参数:

  • city (必须):都市名(例:Tokyo, Osaka, Kyoto)
  • country (可选):国家代码(例如:JP, US, UK、默认值:JP)

例:

curl http://localhost:3000/weather/Tokyo
curl http://localhost:3000/weather/New%20York?country=US

响应:

{
  "success": true,
  "data": {
    "temperature": 22,
    "feelsLike": 24,
    "humidity": 65,
    "windSpeed": 3.2,
    "description": "曇り",
    "visibility": 10,
    "pressure": 1013,
    "city": "Tokyo",
    "country": "JP",
    "timestamp": "2024-01-15T10:30:00.000Z"
  }
}

天气予报

GET /weather/:city/forecast

参数:

  • city (必须):都市名
  • country (可选):国家/地区代码(默认值:JP)
  • days (可选):预报天数(默认值:5,最大值:5)

例:

curl http://localhost:3000/weather/Tokyo/forecast
curl http://localhost:3000/weather/Osaka/forecast?days=3

响应:

{
  "success": true,
  "data": [
    {
      "temperature": 22,
      "feelsLike": 24,
      "humidity": 65,
      "windSpeed": 3.2,
      "description": "曇り",
      "visibility": 10,
      "pressure": 1013,
      "city": "Tokyo",
      "country": "JP",
      "timestamp": "2024-01-15T00:00:00.000Z"
    }
    // ... 他の日付のデータ
  ]
}

🏗️ 项目结构

weather-mcp-server/
├── src/
│   ├── index.ts              # メインエントリーポイント
│   └── services/
│       └── weather.ts        # 天気情報サービス
├── tests/
│   ├── setup.ts              # テストセットアップ
│   └── simple.test.ts        # 基本機能テスト
├── .github/
│   └── workflows/
│       ├── test.yml          # テストワークフロー
│       ├── ci-cd.yml         # CI/CDパイプライン
│       ├── deploy-vercel.yml # Vercelデプロイ
│       └── docker.yml        # Dockerビルド
├── package.json
├── tsconfig.json
├── jest.config.js            # Jest設定
├── vercel.json               # Vercel設定
├── Dockerfile                # Docker設定
├── env.example
└── README.md

🛠️ 开発

依存关系

  • express - Web框架结构
  • cors - CORS中间件
  • axios - HTTP 客户机
  • dotenv - 環境変数管理
  • typescript - TypeScript 编译程序
  • jest -测试框架
  • supertest - API测试

脚本,脚本

  • npm run build - TypeScript编译
  • npm start -运行构建的服务器
  • npm run dev -以开发模式运行
  • npm test -运行测试
  • npm run test:ci - CI用测试执行
  • npm run test:coverage -覆盖测试
  • npm run lint -编码连接
  • npm run type-check -类型检查

🚀 CI/CD 管道

GitHub Actions 工作流程

  • 测试自动化:更改代码时自动运行测试
  • 构建: TypeScript编译
  • 安全性:npm审计+Snyk
  • 部署: Vercel自动部署

测试环境

  • 测试覆盖: 良好
  • 安定性: 100%成功率
  • 自动化: PR自动测试时间

🐳 Docker 支持

# Dockerイメージのビルド
docker build -t weather-api .

# コンテナの実行
docker run -p 3000:3000 weather-api

☁️ Vercel 部署

  1. 维塞尔访问
  2. GitHub导入存储库
  3. 环境变数OPENWEATHER_API_KEY的规格化距离的幂函数
  4. 自动部署完成

🧪 测试

# 全テスト実行
npm test

# カバレッジ付きテスト
npm run test:coverage

# CI用テスト
npm run test:ci

📊 质量指标

  • 编码质量: TypeScript模具安全
  • 测试:全面测试案例
  • CI/CD:完全自动化
  • 部署: 本番環境対応

错误处理

API返回以下错误响应:

{
  "success": false,
  "error": "エラーメッセージ"
}

📈 性能

  • 响应时间: 高速
  • 可扩展性: Docker対応
  • 可用性:Vercel CDN
  • 监视:GitHub操作

🔗 相关链接

许可证

MIT许可证

🤝 貢献

欢迎普鲁特和伊修的报告!

开发指南

  1. 创建功能分支
  2. 添加测试
  3. 执行代码审核
  4. CI/CD通过管线
  5. 合并