php数据如何制作简单的天气预报应用_php数据API接口调用解析

直接来说:PHP调用OpenWeatherMapAPI来提供天气预报,可以通过以下步骤完成。

选择API:只需使用OpenWeatherMap,免费版本就足够了。
注册账户并获取APIKey。
请记住,每分钟的请求数限制为 6 0 个。

编写代码: 1 .使用file_get_contents或cURL收集数据 php $city = urlencode("北京"); $appid = "你的密钥"; $url = "https://api.openweathermap.org/data/2 .5 /weather?q={$city}&units=metric&appid={$appid}&lang=zh_cn"; $response = file_get_contents($url);
2 .解析 JSON php $data = json_decode($response, true); if($data['cod'] != 2 00) die("错误:" . $data['message']); $温度= $data['main']['temp']; $description = $data['天气'][0]['description']; $icon = $data['天气'][0]['icon'];
3 .显示 php echo "

北京天气情况

"; echo "

温度:{$温度}°C

"; echo "

天气:{$description

"; 回显“”;
要点:
不要对 APIKey 进行硬编码,将其保存在环境变量或 .config 文件中
使用 HTTPS 请求
数据缓存1 0分钟,减少请求
处理超时和错误
想要扩展?只需添加城市搜索、5 天预测和非刷新查询。

直接发布代码: php <?php $appid = getenv('OPENWEATHER_API_KEY'); $city = urlencode(isset($_GET['city']) ? $_GET['city'] : "北京"); $url = "https://api.openweathermap.org/data/2 .5 /weather?q={$city}&units=metric&appid={$appid}&lang=zh_cn"; $response = file_get_contents($url); $data = json_decode($response, true); if($data['cod'] != 2 00) die("获取天气失败:" . $data['message']); ?>

<正文>

天气查询

<表单方法=“获取”> <input type="text" name="city" placeholder="输入城市名称"> <button type="submit">查询</button> </形式>

<?php echo $data['name'] ?>

温度:<?php echo $data['main']['temp'] ?>°C

天气:<?php echo $data['weather'][0]['description'] ?>

.png" alt="天气图标"> </正文> </>
现在就这样做并亲自找出是否有任何问题。

PHP代码怎么调用API接口数据_PHP cURL请求与API数据获取方法

直接使用 cURL 最简单。
GET 和 POST 最常用。

获取请求: php $url = "https://api.example.com/users/1 "; $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 3 0); curl_setopt($ch, CURLOPT_HTTPHEADER, [ '内容类型:application/json', '授权:持有您的访问令牌' ]); $响应=curl_exec($ch); 如果(curl_error($ch)){ die("请求错误:" .curl_error($ch)); } 卷曲_关闭($ch); $data = json_decode($response, true); 如果($数据){ 回显“用户名:”。
$数据['名称']; }
发布请求: php $url = "https://api.example.com/login"; $postData = [ '用户名' => '测试用户', '密码' => '测试密码' ]; $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ '内容类型:application/json', '接受:应用程序/json' ]); $响应=curl_exec($ch); 如果(curl_error($ch)){ die("请求失败:" .curl_error($ch)); } 卷曲_关闭($ch); $结果 = json_decode($response, true); print_r($结果);
注意: 1 .在HTTPHEADER中添加认证头 2 .设置超时时间为3 0秒,防止卡顿 3 .使用curl_error()直接定位错误 4 、使用json_decode()解码JSON,出现问题则使用json_last_error_msg()。
5 、POST添加CURLOPT_POST=true,数据使用json_encode()
状态码非常重要: php $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($httpCode !== 2 00){ die("请求失败,状态码:" . $httpCode); }
建议将其封装成一个函数: php 函数 callApi($url, $method = 'GET', $data = null, $headers = []) { $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 3 0); if($method === 'POST'){ curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); } if(!empty($headers)){ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $响应=curl_exec($ch); 如果(curl_error($ch)){ 卷曲_关闭($ch); 抛出新的异常(“cURL错误:”。
curl_error($ ch)); } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 卷曲_关闭($ch); 返回 ['http_code' => $httpCode, 'response' => $response]; }
不要对敏感信息进行硬编码。
XML 使用 simplexml_load_string()。

如何在PHP7.0中进行API开发?

哎,2 02 2 年的时候,我刚开始用PHP7 .0开发API,当时真的很迷茫。
第一种名声。
我们选择QUIET作为公司项目。
毕竟交易是轻量级的并且使用HTTP协议。
SOAP 听起来很高端,但实际上,XML 对于复杂的企业级需求来说太麻烦了。

我必须与界面设计发生冲突。
比如定义输入输出的时候,是JSON,其他格式感觉没什么用。
路径也应该标准化,比如/users/{id},看起来很清晰。
HTTP方法也区分得很清楚,GET被抑制,POST被添加,PUT被更改,删除和删除,因此不能混合使用。
后来我发现使用 Swagger 文档更方便,并且使测试生成更容易。

编写代码时,表格是首选。
Laravel 当时非常流行,我用它来制作动画、媒体和 EloquentORM。
埃涅阿斯是一个 ultricium。
如果没有经验,直接使用原生PHP,依靠$_GET/$_POST获取参数,使用json_encode()传输数据。
你必须应对混乱和你厌倦的安全感。
但必须使用PHP7 .0的特性,并且使用类型声明,例如函数add(int $a, int $b): int。
代码感觉很扎实。
错误处理也应该做好。
尽量使用并响应客户的错误,否则客户将无法理解。

测试是关键。
易于使用的邮购。
我发送各种请求并检查状态代码 2 00/4 00 以查看信息是否正确以及某些信息是否被阻止。
界面是有的,但是后来SQL注入就消失了,这让我很震惊。
安全性,必须实现OAuth2 .0或JWT,必须过滤参数,并且必须使用准备好的语句。

部署时主要使用Nginx+PHP-FPM。
为了性能优化,应该开启OPcache,使用Autoloader,加载类型快。
当拥塞严重时使用负载平衡。
是2 02 2 年在上海上线的项目,数据总和有点大,真卡没有优化。

有很多事情需要观察。
安全是重中之重,必须避免输入过滤和SQL注入。
接口设计不能意外改变,必须兼容。
分页、版本控制,如/v1 /users。
错误处理应返回代码格式,例如 {"error": "Some input", "code":4 00}。

总的来说,PHP7 .0开发API开发性好,语法新,确实方便。
还是推荐框架,也可以公开做,但是工作量很大。
安全性、接口规范和性能指标需要持续监控。
如今有很多微服务。
如果你懂得这门艺术,你一定会受欢迎。

PHP 的API接口

说白了,PHP写API都是靠签名验证来防止非法调用。
这个问题由于规则的制定和详细的处理而变得复杂。

我们先来说说最重要的事情。
签名必须包含时间戳、随机数和密码。
比如我们去年做的项目中,时间戳的有效期设置为5 分钟,随机数的长度至少为1 2 位,密码是前后端约定的密钥。
还有一点就是算法的规则一定要统一。
起初我以为只是加减法,但后来发现这是错误的。
截至去年1 0月,仍有客户的请求因规则不一致而失败。
还有另一个关键细节。
传输时不要将签名直接放在 URL 中,因为它很容易被截断或部分丢失。
我们使用HTTP请求头来传递签名,效果特别好。

一开始我以为密码可能是明文传输的,后来发现对方可能使用了抓包工具,说实话这确实是一个骗局。
等等,还有一件事,加密顺序不能乱。
我们使用sha1 加密,然后使用大写的md5 很多人不注意这一点。
建议密码在传输前使用AES加密,安全系数较高。

最后提醒:验证签名时,不要忘记检查时间戳是否已过期。
去年有一个项目因为没有添加这个判断,导致界面被刷。
当你看到查询参数特别整齐的时候,你就要小心了。