承接 projectsaturnstudios/nws 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

projectsaturnstudios/nws

Composer 安装命令:

composer require projectsaturnstudios/nws

包简介

National Weather Service (NWS) integration for Laravel applications.

README 文档

README

A Laravel package for integrating with the National Weather Service API. Get weather forecasts, current conditions, and alerts directly from the source - no API key required!

Features

  • 🌤️ Current Weather & Forecasts - Get detailed weather information
  • Weather Alerts - Real-time warnings, watches, and advisories
  • 🎯 Location-based - Support for coordinates and addresses
  • 🚀 Laravel Native - Built with Laravel HTTP Client and Facades
  • 💾 Smart Caching - Configurable caching for optimal performance
  • 🔧 Builder Pattern - Fluent, chainable API for easy usage
  • 📊 Rich Data - Strongly typed DTOs using Spatie Laravel Data

Installation

composer require projectsaturnstudios/nws

Publish the configuration file:

php artisan vendor:publish --tag=nws-config

Quick Start

Using the Facade

use ProjectSaturnStudios\NWS\Support\Facades\NWS;

// Get current weather for Tampa
$weather = NWS::forTampa()->getCurrentWeather();

// Get 7-day forecast for any location
$forecast = NWS::location(40.7128, -74.0060)->getForecast();

// Get weather alerts for Florida
$alerts = NWS::getAlertsForArea('FL');

Using the Builder Pattern

use ProjectSaturnStudios\NWS\NationalWeatherService;

$nws = NationalWeatherService::make()
    ->location(27.9506, -82.4572)  // Tampa coordinates
    ->units('us');                  // US customary units

$currentWeather = $nws->getCurrentWeather();
$hourlyForecast = $nws->getHourlyForecast();
$alerts = $nws->getAlerts();

API Methods

Weather Data

// Get current conditions and forecast
$weather = NWS::location($lat, $lon)->getCurrentWeather();

// Get 7-day forecast
$forecast = NWS::location($lat, $lon)->getForecast();

// Get hourly forecast
$hourly = NWS::location($lat, $lon)->getHourlyForecast();

// Get point information (grid coordinates, office, etc.)
$point = NWS::location($lat, $lon)->getPoint();

Weather Alerts

// Get alerts for a state/area
$alerts = NWS::getAlertsForArea('FL');

// Get alerts for a specific zone
$alerts = NWS::getAlertsForZone('FLZ151');

// Get alerts for coordinates
$alerts = NWS::location($lat, $lon)->getAlerts();

// Filter severe alerts
$severeAlerts = $alerts->getSevereAlerts();
$activeAlerts = $alerts->getActiveAlerts();

Configuration Options

// Set units (us or si)
$nws = NWS::make()->units('si');

// Enable experimental features
$nws = NWS::make()->withFeatureFlags([
    'forecast_temperature_qv',
    'forecast_wind_speed_qv'
]);

Response Data

All responses are strongly typed using Spatie Laravel Data:

$forecast = NWS::forTampa()->getForecast();

// Access forecast periods
foreach ($forecast->periods as $period) {
    echo $period->name;                    // "This Afternoon"
    echo $period->temperature;             // 89
    echo $period->shortForecast;           // "Partly Sunny"
    echo $period->detailedForecast;        // Full description
    echo $period->probabilityOfPrecipitation->value; // 20
}

// Helper methods
$todaysPeriods = $forecast->getTodaysPeriods();
$currentPeriod = $forecast->getCurrentPeriod();

Configuration

The package includes comprehensive configuration options:

// config/nws.php
return [
    'base_url' => 'https://api.weather.gov',
    'user_agent' => 'Your App Name (contact@example.com)',
    'timeout' => 30,
    'cache' => [
        'enabled' => true,
        'ttl' => [
            'forecasts' => 1800,  // 30 minutes
            'alerts' => 300,      // 5 minutes
            'points' => 86400,    // 24 hours
        ],
    ],
    'default_location' => [
        'latitude' => 27.9506,   // Tampa
        'longitude' => -82.4572,
    ],
];

Caching

The package automatically caches API responses based on configuration:

  • Points/Offices: 24 hours (rarely change)
  • Forecasts: 30 minutes (updated regularly)
  • Observations: 10 minutes (current conditions)
  • Alerts: 5 minutes (time-sensitive)

Error Handling

The package includes automatic retry logic for temporary failures:

try {
    $weather = NWS::forTampa()->getCurrentWeather();
} catch (\Exception $e) {
    // Handle API errors
    logger()->error('Weather API failed', ['error' => $e->getMessage()]);
}

Requirements

  • PHP 8.2+
  • Laravel 10+
  • Guzzle HTTP Client (via Laravel HTTP Client)

About the NWS API

The National Weather Service API is:

  • Free - No API key required
  • Authoritative - Direct from the source
  • Comprehensive - Forecasts, observations, alerts
  • Reliable - Government-maintained infrastructure

License

MIT License. See LICENSE file for details.

Contributing

Contributions welcome! Please see CONTRIBUTING.md for guidelines.

projectsaturnstudios/nws 适用场景与选型建议

projectsaturnstudios/nws 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21 次下载、GitHub Stars 达 2, 最近一次更新时间为 2025 年 09 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 projectsaturnstudios/nws 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 projectsaturnstudios/nws 我们能提供哪些服务?
定制开发 / 二次开发

基于 projectsaturnstudios/nws 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 21
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 20
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-09-27