1.选择语言与框架

考虑了3款比较热门的后端语言,PHP,JavaScript(node.js),Python,打算从中选择一款,分别比较了它们的特点,最后选定了用node.js来开发,原因有3点:

1.js目前比较泛用,本身既能写Web前端,又能通过node.js来写后端,还能通过ReactNative来写移动端,真的是居家旅行必备2333
2.node.js搭建的服务端在性能上很出色
3.我本人也对Web开发很感兴趣QwQ


然后就是框架的选择了,node.js的web框架主流的选择有express和koa,koa算是express的进化版,技术还是新的好~ koa!就决定是你了╮( ̄▽ ̄)╭

2.编写node.js代码

这部分的内容还是比较多的,更推荐看专业的教程,推荐廖雪峰老师的JavaScript教程中的node.js部分,最后会手把手教你使用node.js构筑基于koa2的MVC架构的RESTful API项目,可以去下载demo扩展成满足自己项目需要的API

教程地址


我写的简易RESTful API demo如下

3.分析API类型

常见的API类型有GET、POST、DELETE、PUT,这几种类型的写法在廖老师的教程中都有涉及,其中GET通常又分为3种类型:

  • 返回Json
  • 返回图片资源
  • 返回用于下载的文件

教程中没有划分这几种GET类型,我在自己的demo中分别实践了一遍

3.1 返回Json

这种类型最常用,直接返回可以转化为实体类的Json结构体
koa中type类型定义为application/json body直接传入一个对象

1
2
3
4
5
6
'GET /api/geeknews/version': async (ctx, next) => {
ctx.rest({
code: version.getVersionCode(),
des: version.getVersionDes()
});
},

1
2
3
4
5
6
7
8
ctx.rest = (data) => {
ctx.response.type = 'application/json';
ctx.response.body = {
code: 200,
message: '',
data: data
};
}

3.2 返回图片资源

这种类型在Android端多用于Glide、Picasso等框架加载图片
koa中type类型定义为.jpg(也可以是其他图片类型) body传入读取到的文件流

1
2
3
4
5
'GET /img/test.jpg': async (ctx, next) => {
ctx.rest(
fs.createReadStream(imgPath)
);
}

1
2
3
4
ctx.rest = (data) => {
ctx.response.type = '.jpg';
ctx.response.body = data;
}

3.3 返回用于下载的文件

这种类型在Android端多用于更新apk包,下载配置文件等
koa中type类型定义为application/octet-stream body传入读取到的文件流

1
2
3
4
5
'GET /apk/geeknews.apk': async (ctx, next) => {
ctx.rest(
fs.createReadStream(filePath)
);
},

1
2
3
4
ctx.rest = (data) => {
ctx.response.type = 'application/octet-stream';
ctx.response.body = data;
}


这篇文章主要的目的在于让大家少走弯路,具体代码还是需要去参考上面列出的教程和demo,掌握了之后自己写一些简单的RESTful API还是很轻松的(´・ω・`)

声明:本站所有文章均为原创或翻译,遵循署名-非商业性使用-禁止演绎 4.0 国际许可协议,如需转载请确保您对该协议有足够了解,并附上作者名(Est)及原贴地址