前言

现在,我们来“假设”一个接口需求,然后来完成它。

需求简介

我们的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,但胜在容易理解啊,开发人员能迅速理解接口,并在此基础上进行开发才是重要的。

后记

通过这篇文章,你大概已经能编写接口服务端了,当然你只能做跟班,一个一个去写接口,设计整个接口服务还不行。

后续的文章,我们会继续深入理解接口服务端的设计。