前言
现在,我们来“假设”一个接口需求,然后来完成它。
需求简介
我们的APP需要一个商品模块,包含了如下功能,我们应该如何设计接口呢?检索,从商品数据库中找到目标商品
展示,查看一个商品的详细信息
评论,查看与编写评论
准备工作
选择一个接口框架
印象中,说起框架就是指 think PHP、Laravel、yii等,但其实还有大量的“专业框架”,比如专门为接口开发而设计的框架,不要问我都有哪些框架,自行搜索,反正我都没用过。如果你有较高的负载要求,也可以试试 node.js 和 go 语言。
多数情况下,我们还会选择 tp laravel这种框架,因为他们也为接口开发需求做了大量的工作。
注意:你完全可以把接口服务和网站后台、pc前台,彻底分割,不使用同一个项目,只要接口服务能读写数据库,就足够了。
为接口准备一个网址
为了接口服务的独立性、美观性,我们先给接口准备一个网址吧。
上面这两种看起来都不错,如果可能的话,尽量用api子域名这种模式更好,v1是api的版本号。
使用 http 还是 https
https 是大势所趋,如果可能请尽量使用https服务,这样一来数据被劫持的可能性就很低很低。
接口文档
上面的需求中涉及商品检索、展示、查看和发表评论,接下来我们先来写一下接口文档。
商品检索
输入关键字,返回多个符合查询条件的商品数据。
接口网址:/v1/goods/getlist
请求方式:post
数据格式:json
请求参数:{
"keyword": "搜索关键字",
"limit": "一次返回的商品数量",
}
返回结果(如果 errcode>0 表示有错误,请根据错误代码进行查询):{
'errcode':0,
'total': '商品总数',
'items':[
{商品1},
{商品2},
{商品3},
{...},
]
}
商品展示
接口网址:/v1/goods/get
请求方式:post
数据格式:json
请求参数:{
"id": "商品id",
}
返回结果:{
'errcode':0,
'info':{商品信息},
'imgs':[商品图片1,图片2,图片3,...]
}
获取评论略
提交评论略
接口开发
多数情况下,你能看懂这个接口文档,就应该知道如何进行开发了。定义路由、控制器,实现接口网址
接收请求参数,并进行数据处理
返回结果给客户端
做接口其实挺简单的,做完这个再做下一个就是了。
我的接口符合 RESTful 吗?
符合的程度并不高,不过别担心,微信的平台接口大概也是这样的。虽然没有完整遵循RESTful,但胜在容易理解啊,开发人员能迅速理解接口,并在此基础上进行开发才是重要的。
后记
通过这篇文章,你大概已经能编写接口服务端了,当然你只能做跟班,一个一个去写接口,设计整个接口服务还不行。
后续的文章,我们会继续深入理解接口服务端的设计。