《细说PHP》第四版 样章 第23章 自定义PHP接口规范 11

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/ITXDL123/article/details/100689594

23.6 使用第三方接口服务实例

接供服务的第三方接口平台有很多,现在的项目中也经常用到一些第三方接口,如支付宝、微信、短信、邮件接口等,我们需要借助第三方的能力来实现产品的某些功能。如果自己已经掌握了实现开发接口的方法,应用第三方接口就比较容易了,它们都遵循RESTful风格API的原则,原理是相似的。本节我们来演示通过调用第三方接口获取天气信息,放到自己的网站上的方法。

23.6.1 查找API

用谁的接口,就需要到谁的平台上查找接口的使用文档。例如,想对微信公众平台的服务号进行二次开发,就需要用自己注册的服务号,登录微信公众平台的系统。设置成开发者权限,就可以查看公众平台提供的所有API说明。根据自己的业务需求,再找到对应的API去使用,从而完成开发目标。更多的第三方接口需求,也可以通过搜索引擎找到提供接口的平台。如APIStore(百度旗下)、易源数据、聚合数据等。

23.6.2 查看API文档说明

进入聚合数据平台,网址为https://www.juhe.cn。如果是第一次使用,需要先在该平台注册一个新的账号。聚合数据平台提供了生活常用、车辆服务、金融征信、位置服务、即时通信、应用开发等分类的各种接口。本节仅演示天气接口的使用,用于获取全国各地的天气情况。通过聚合数据平台的导航菜单,在生活常用栏目中找到天气预报接口文档,文档地址为https://www.juhe.cn/docs/api/id/39,如图23-13所示。

图23-13 全国天气预报数据接口文档

23.6.3 获取接口的key

通过查看文档我们可以看到有个参数 key,这个参数是必填项,用来生成签名进行安全验证。所以我们要先得到这个参数。进入平台的个人中心,通过导航菜单找到“数据中心”下的“我的数据”,如图23-14所示,页面上的“AppKey:3ff5814b0b64c3ee8afc9b2f6c844d75”就是我们需要的key。

图23-14 找到验证的key

有了参数“key=3ff5814b0b64c3ee8afc9b2f6c844d75”,如果想获取 “北京”的天气情况,可以设置参数“cityname=北京”,其他参数可以使用默认值。接口的请求使用get()方法,接口的地址为“http://v.juhe.cn/weather/index”,组合成一个完整的URL如下所示:

GET http://v.juhe.cn/weather/index?cityname=北京&key=3ff5814b0b64c3ee8afc9b2f6c844d75

请求后默认返回JSON格式数据,可以将URL直接复制到浏览的地址栏中,测试接口访问是否正确,执行后结果如图23-15所示。

图23-15 使用浏览器测试天气预报接口

23.6.4 使用 PHP 代码请求接口

在PHP程序中,可以使用自己封装的HTTP类中的get()方法,请求天气接口并处理返回数据。新建一个PHP文件weather.php,代码如下所示:

上例代码包含了获取支持城市列表、根据城市获取天气预报,包括3小时天气预报的实现和近一周的天气情况。示例代码主要解析了一些常用字段,如果需要完整的或其他未包含的字段,可以自行参考官方的接口进行修改,运行结果如图23-16所示。

图23-16 使用PHP处理天气接口返回结果

第三方接口平台上有很多比较实用的接口,都可以用同样的方法去试一试。

23.7 小结

本章必须掌握的知识点

Ø 接口的实现流程。

Ø 接口的请求访问流程。

Ø 按口的安全控制规范算法。

Ø RESTful风格API的原则和规范。

Ø 现实WebAPI框架的原理。

Ø 会使用第三方接口。

本章需要了解的内容

Ø 了解接口的几种实现方法。

Ø 接口的应用和优势。

本章需要拓展的内容

Ø 在自定的WebAPI框架中增加表goods的接口。

Ø 通过第三方接口实现支付功能。

Ø 对微信公众账号中的订阅号或服务器进行二次开发。

Ø 设计和开发一款自己的微信小程序。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杰的记事本

SVG 图标在React项目中的优化

官方文档:https://webpack.docschina.org/loaders/url-loader/

15010
来自专栏人工智能机器学习

CTF从入门到提升(十)文件上传

白名单和上一节讲的黑名单的区别在哪里?黑名单是未经许可非法用户禁止入内,我禁止某些人入内,大部分人是可以进去的。白名单是未经允许禁止入内,只有允许的人才能进入,...

26500
来自专栏杰的记事本

img标签不同设备加载不同尺寸的图片的几种方法

一般来说,桌面端显示的是大尺寸的图像,文件体积较大。手机的屏幕较小,只需要小尺寸的图像,可以节省带宽,加速网页渲染。

28610
来自专栏钻芒博客

支付宝WPAPY个人可申请当面付,创建应用获取当面付接口信息(私钥、公钥)

首先打开支付宝开放平台:https://openhome.alipay.com,在网页中心创建应用

37360
来自专栏杰的记事本

escape() VS encodeURI() VS encodeURIComponent()的区别

JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:unes...

8110
来自专栏杰的记事本

CSS实线边框渐变以及虚线边框渐变

给border-image加linear-gradient不难理解,但是如果单纯使用border-image,会发现效果是这样的:

41720
来自专栏杰的记事本

注意IE下Ajax Get缓存的问题

​ 常见的是ajax请求过一次以后,以后的相同url的get请求会存在下面这种情况:

11920
来自专栏杰的记事本

一些原生写法可以替代Jquery方法

jQuery的核心是通过各种选择器,选中DOM元素,可以用querySelectorAll方法模拟这个功能。

18320
来自专栏沉默王二

关于 URL,说几个你不知道的点!

java.net.URL 类将 URL 地址进行了封装,并提供了解析 URL 地址的基本方法,比如获取 URL 的主机名和端口号。java.net.URLCon...

11120
来自专栏程序员的成长之路

16 个超级实用的 Java 工具类

在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。

23510

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励