《细说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 ...
随机推荐
- MySQL数据库~~~~pymysql 连接 MySQL的客户端
import pymysql conn = pymysql.connect( host = '127.0.0.1', # 主机 port = 3306, # 端口号 user = 'root', # ...
- windows重装系统后grub引导菜单修复方法(亲自实验过)
问题: 电脑安装的是windows7+ubuntu 15.10双系统.windows重装后,grub引导界面消失. 解决方法有两大步: 1.进入ubuntu; 2.在ubuntu中修复grub. 一. ...
- git结合项目基本使用
学习博客:1,史上最浅显易懂的Git教程! 2,结合项目具体使用 3,常用命令快速查看 4,git stash 用法总结和注意点 一.git的工作原理和工作流程 Workspace:工作区 Index ...
- Ubuntu16.04重装NVIDIA驱动
Ubuntu系统 $ sudo apt update $ sudo apt upgrade 之后出现显卡驱动出现故障,nvidia-smi输出有错,检测不到相应的驱动.只好重装,记录一下,太多的教程根 ...
- 性能分析-java程序篇之案例-工具和方法
1. 背景说明 线上服务响应时间超过40秒,登录服务器发现cpu将近100%了(如下图),针对此问题,本文说明排查过程.工具以定位具体的原因. 2. 分析排查过程 此类问题的排查,有两款神器可用,分别 ...
- Redis实战(一)Redis简介及环境安装(Windows)
提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...
- centOS如何灵活管理服务进程
1.将程序跑起来,且关闭会话时程序仍在运行. nohup node index.js & (头部加了nohup,表示在你退出帐户或关闭终端之后继续运行相应的进程;尾部的&表示在后台执 ...
- 10分钟浅谈CSRF突破原理,Web安全的第一防线!
CSRF攻击即跨站请求伪造(跨站点请求伪造),是一种对网站的恶意利用,听起来似乎与XSS跨站脚本攻击有点相似,但实际上彼此相差很大,XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户 ...
- opencv-python 图像基础处理(二)
图像阈值 ret, dst = cv2.threshold(src, thresh, maxval, type) - src: 输入图,只能输入单通道图像,通常来说为灰度图- dst: 输出图- th ...
- JavaWeb开发——软件国际化(动态元素国际化)
软件国际化的第二个部分,就是动态元素国际化. 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理.Java 中提供了解决这些 ...