《细说PHP》第四版 样章 第23章 自定义PHP接口规范 11
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的接口。
Ø 通过第三方接口实现支付功能。
Ø 对微信公众账号中的订阅号或服务器进行二次开发。
Ø 设计和开发一款自己的微信小程序。




《细说PHP》第四版 样章 第23章 自定义PHP接口规范 11的更多相关文章
- 《细说PHP》第四版 样章 第二章 PHP的应用与发展 1
<细说PHP>第四版 样章 第二章 PHP的应用与发展 1 学习任何编程语言之前,先了解一下它的应用与发展是很有必要的.从Web开发的历史看来,PHP.Python和Ruby几乎是同时出现 ...
- 《java编程思想(第四版)》第一二章学习笔记
目录 一.Introduction 1.抽象过程 2.面向对象语言(包括Java)的五个基本特性 3.每个对象都提供服务 4.public.private.protected三者的区别 5.Java的 ...
- 《细说PHP》 第四版 样章 第二章 PHP的应用与发展 5
2.5 如何学习PHP PHP以其简单易学的特点,以及敏捷开发的优势,从一个几乎不被人知的开源项目,慢慢成长为技术人员首选的动态Web设计工具,与其他语言相比,PHP表现得更好.更快.更简单易学.尽 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 9
23.5.3 WebAPI框架应用 程序框架其实就是一个半成品项目,在应用框架时,核心的服务程序只应用,不需要改动.当然如果有必要,也可以根据项目的需要对框架进行二次开发.本节内容主要基于我们的框架 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 8
23.5.2 架构详解 本例的实现最重要的就是服务层的设计,有两个配置文件config.php和api.php,其中文件config.php是全局的配置文件,用于整个程序全局需要的参数设置.可以根据 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 6
23.4 API的设计原则和规范 API是服务提供方和使用方之间对接的通道,前面我们设计的一些简单API的例子,基本上比较随意,没有使用任何规范.设想一下,每个平台都可能存在大量的API,如果API ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3
23.2 接口实现的基础 大家都很了解函数在本地应用,通过名称调用函数执行,并通过传递不同参数,函数有不同执行,执行后给调用者返回结果.如果把一个函数做成一个接口远程访问,也需要这几个步骤.使用HT ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 1
如今的项目开发中,接口是很普遍的应用技术.现在好多项目组都单独设有接口开发人员.像腾讯.微博.淘宝等开放平台,其所谓的开放,就是提供一些可调用的接口,用于获取相关的信息.例如,微信用户基本信息.淘宝店 ...
- 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 12
18.9 管理表books实例 在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增.删.改.查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的.本例为了能更好地展示PD ...
随机推荐
- oracle 根据时间戳查询date类型sql
话不多说上sql: select to_char(1574837126879/(1000*60*60*24)+to_date('1970-01-01 08:00:00','YYYY-MM-DD HH2 ...
- python发送邮件(smtplib)
我们在测试完成后,都会发一份邮件也就是我们的测试报告,那么既然要自动化,是不是也可以通过python帮助我们发送邮件?当然这么强大的python可以帮助你完成这个需求 SMTP SMTP(Simple ...
- 菜鸟刷面试题(一、Java基础篇)
目录: JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什 ...
- RTP Payload Format for H264 Video
基础传输结构 rtp中对于h264数据的存储分为两层,分别是 VCL: video coding layer 视频编码层 这是h264中block, macro block 以及 slice级别的定义 ...
- 【RTOS】基于V7开发板的最新版uCOS-III V3.07.03程序模板,含MDK和IAR,支持uC/Probe,与之前版本变化较大
模板下载: 链接:https://pan.baidu.com/s/1_4z_Lg51jMT87RrRM6Qs3g 提取码:2gns 对MDK的AC6也做了支持:https://www.cnblog ...
- Mybatis基本类型参数非空判断(异常:There is no getter for property...)
先看一小段代码 <select id="queryByPhone" parameterType="java.lang.String" resultType ...
- c# 异常精准定位
在日常项目开发中,异常抛出和捕获是再平常不过的事情.通过try-catch我们可以方便的捕获异常,同时通过查看异常堆栈我们能发现抛出异常代码的位置. 例如下面这段代码: using System; u ...
- C#面向对象--简介
一.C#提供对面向对象编程(Object Oriented Programming)的完整支持:类描述对象的类型,而对象是类的具体实例,创建对象的过程也被称为实例化(Instantiation):通常 ...
- Python进阶一
文章目录 异常处理 1 基本用法 2高级用法 逻辑运算符 循环的高级用法 异常处理1 基本用法应对所有情况 try: 1/0 except: print('某原因异常') 应对特定异常情况 try: ...
- kmeans均值聚类算法实现
这个算法中文名为k均值聚类算法,首先我们在二维的特殊条件下讨论其实现的过程,方便大家理解. 第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给 ...