You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
constKoa=require('koa')constapp=newKoa()app.use(function*(next){//this.body = 'hello koa';letstart=newDate();yieldnext;letms=newDate()-start;console.log('%s %s - %s',this.method,this.url,ms);})app.listen(3000)console.log('[demo] start-quick is starting at port 3000')
RESTful的定义
一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在web app.中。其中一个原因是GET可能会被网络蜘蛛等随意访问
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
向指定资源位置上传其最新内容
请求服务器删除Request-URI所标识的资源
MVC软件设计模式
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
通常模型对象负责在数据库中存取数据。
通常视图是依据模型数据创建的。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
环境安装
文件目录构件
起步
koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
koa2里面支持async和await,毕竟这个是取代koa1使用co配合generator的一种过度方式。
这里就讲下koa1来做吧。
首先要做的是:
引入各种中间件
koa-bodyparse
koa-router
koa
编写node服务器脚本app.js
上面就是启动了一个简单的web服务,我们平时调用接口的时候是http://api.xxx.com/api/xxxx/:page
引入路由中间件,并设置你要拦截的请求
这个时候所有的请求中带有/api的都被拦截,然后走这个对应的路由中间件,我们在这个对应的路由中间件中定义操作方法比如常见的增删改查这一套。
比如说你的请求的接口是:
http://api.xxx.com/api/list/:page
我们对应的api这个路由中间件里面就定义的有
换句话说简单的理解,我们请求http://api.xxx.com/api/list/:page
会被映射到getList方法上,这个方法就定义在我们的控制器里面的。
按照以往我写后端的套路controller里面我制作一些校验啊之类的简单操作,不做复杂的逻辑处理之类的。然后对应的方法返回对应的值。
这个里面的model就是来自于表操作的数据实例。对应的控制器有对应的model。按照更好的架构设计,复杂的逻辑处理都应该单独拆个service层。真的model就是只拿最原始的数据实例,不做处理的。
这里我没有做复杂的拆分。把一些逻辑处理也放在这里面的,这是不合适的。
本来这一层只用于获取原始数据的
上面我用的是一个ORM(sequelize),操作数据库的,让不会写sql的也可以玩CURD。
前面我已经把数据库连接操作放在了db.js里面了。所以这里直接引入就好了。
这里我们就连接好对应的数据库,以及可以操作表啦。
之前我们先建好数据库里面的表,但是要手动把表结构写出来,这个就很伤了,可能并不会对不对。sequelize,使用这个东西很方便就可以自动根据数据库里面的表字断生成表结构,很爽。
下面是命令:
这个时候基本就大功告成了。但是~~你的数据库没有数据的话那还是只有gg。这个时候想要数据对不对,哈哈写个简单的爬虫吧~
最后
这个只是一个node写接口的简单入门,没有涉及到很深,什么并发控制啊,鉴权啊,session啊那些东西,另外用node来做单元测试也是很舒服的
The text was updated successfully, but these errors were encountered: