oldman10000 / weather-app
获取仅通过IP地址识别的客户的5天天气预报
README
使用您的IP地址,通过AccuWeather API获取简单的5天天气预报。
如何在您的Laravel项目中安装
在您的项目目录中输入以下命令。
composer require oldman10000/weather-app:^1.0.*
这将把该包安装到您的vendor目录中。
此时,清除缓存以确保一切安装正确可能不是坏事。
php artisan cache:clear php artisan route:clear php artisan view:clear
运行以下命令以确保迁移类能正确工作也是明智的。
composer dump-autoload
作为安全措施,您可以使用以下命令发布您本地项目中的所有供应商文件。这也允许您选择覆盖代码。
php artisan vendor:publish --provider="Oldman10000\WeatherApp\WeatherAppServiceProvider"
无论如何,您还需要发布包含一些CSS和图标的public文件夹。
php artisan vendor:publish --tag=public --force
您需要使用以下命令在SQL中创建一个数据库。
create database weatherapp;
要迁移新表,请运行以下命令
php artisan migrate
查看项目
通过启动开发主机来测试网站是否运行正确
php artisan serve
在浏览器中转到[localhost]/weather,这将是该项目的“主页”。在实时网站上,输入字段会自动填充客户端IP地址,但在开发服务器上这没有太大意义,因为它只会显示127.0.0.1 localhost IP。您可以在此网站或简单地通过谷歌搜索找到您的IP地址。当您输入IP地址时,您将被重定向到一个显示您IP地址位置5天预报的页面。以下是IP地址156.0.201.255的结果。
有用的CLI命令
您可以使用以下命令将IP地址添加到数据库中
php artisan create:insert-ipaddresses {ip address}
直接在CLI中使用以下命令获取您IP地址的天气数据
php artisan get:weather-data {ip-address}
改进
-
主IP地址表单字段没有进行表单验证。结果是,如果输入了无效的IP地址,API将返回Ashburn, VA, USA的位置数据,这可能是他们的数据中的默认值或第一个值。在这种情况下返回错误实际上对我们更有用,而不是收到错误的数据。因此,添加某种类型的API地址验证来引发错误会很好。可能有一个PHP包做这个,这可能值得研究。
-
我注意到API返回的日期有时是错误的,这看起来是由于时区引起的。下面的截图显示的结果是在9月11日从API获取的,然而,正如您所看到的,显示的第一个日期是9月10日。AccuWeather API每天只收集几次天气数据,早上和晚上各一次,所以看起来在API收集数据时,在英国当地仍然是9月10日,但在圣卢西亚是9月11日,因为它在GMT+10。
这是API的一个缺点,然而可能有一些方法可以修复这里的输出。首先想到的是,与当前的做法不同,获取10天的天气预报而不是5天的天气预报。然后简单地显示从与本地“今天”匹配的第一个日期开始的5天。

