Node.js Web开发(二)

上一篇文章主要介绍了koa2的基本操作(坐下坐下),但是每次都返回一样的HTML似乎也不可能,所以现在我们需要来处理URL了。

直接来点高级点的东西,我们需要一个能处理URL的middleware,它叫做:koa-router:

npm install koa-router

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
const Koa = require(‘koa‘);

const router = require(‘koa-router‘)();

const app = Koa();

router.get(‘/hello/:name‘, async(ctx, next) => {

var name = ctx.params.name;

ctx.response.body = `<h1>Hello, {$name}!</h1>`;

});

router.get(‘/‘, async(ctx, next) => {

ctx.response.body = ‘<h1>Index Page</h1>‘;

});

app.use(router.routes());

app.listen(3000);

console.log(‘Server listen on port 3000...‘);

这里的代码,会在访问网址localhost:3000时返回Index Page,而在访问localhost:3000/hello/louis的时候,显示的就是Hello, louis!了,这样router就为我们达到了处理URL的功能。注意一下,在引入router的时候,是多一个括号的,这说明我们引入的router是一个对象,而前面Koa引入的其实是一个类(所以它被大写了~)。

处理POST请求

router.get()处理的是HTTP的GET请求,但是除了GET请求,我们还经常会碰到POST请求(比如在注册一个用户啊,或者新增一篇推文的时候),这就需要用到router.post()的方法。不过,post请求的内容,通常作为request的body进行发送,而Node.js和koa都不具备解析这个body的功能,所以,这里我们就要用到另一个非常有用的middleware: koa-bodyparser

大专栏  Node.js Web开发(二)pt">

1

2

3

4

5

6

7
const bodyParser = require(‘koa-bodyparser‘);

app.use(bodyParser());

app.use(router.routes());

...

现在,我们就可以处理POST的请求了!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
router.get(‘/‘, async (ctx, next) => {

ctx.response.body = `<h1>Index Page</h1>

<form action="/signin" method="post">

<p>Name: <input name="name" value="snow"></p>

<p>Password: <input type="password" name="password"></p>

<p><input type="submit" value="submit"></p>

</form>`;

});

router.post(‘/signin‘, async(ctx, next) => {

var

name = ctx.request.body.name || ‘‘,

password = ctx.request.body.password || ‘‘;

console.log(`login with name: {$name} and password: {$password}...`);

if (name === ‘snow‘ && password === ‘117‘){

ctx.response.body = `<h1>Welcome, {$name}!</h1>`;

} else {

ctx.response.body = `<h1>Login failed.</h1>

<p><a href="/">Try again</a></p>`;

}

});

注意这里的name和password的写法,如果不存在的话,默认为 ‘’,也不会报错的。

原文地址:https://www.cnblogs.com/liuzhongrong/p/12000002.html

时间: 2024-11-06 17:56:20

Node.js Web开发(二)的相关文章

《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

近期想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序.所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴请參考:<Node.js入门>CentOS 6.5下Node.js Web开发环境搭建笔记 Node.js是什么? 我们看看百科里怎么说的? JavaScript是一种执行在浏览器的脚本,它简单,轻巧.易于编辑,这样的脚本通经常使用于浏览器的前端编程.可是一位开发人员Ryan有一天发现这样的前端式

node.js web开发:EXPRESS 4.x 以上使用session和cookie 的记录

关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索. 我是基于connect这个中间件实现的.这个middleware 功能非常强大

Node.js Web开发:WebSocket

2019-12-18 08:44:49 原文地址:https://www.cnblogs.com/JasonPeng1/p/12058017.html

利用OpenShift托管Node.js Web服务进行微信公众号开发

最近写了一个微信的翻译机器人.用户只要关注该微信号,发送英文的消息,就能收到中文翻译的回复.后台是用Node.js写的,托管在OpenShift的Paas平台上.翻译过程实际上是调用微软的Bing translation API做的,代码中用到了alexu84的bing-translate和JacksonTian的wechat这两个npm模块.下面把做的过程详细说一下. 1. 微信公众号开发 首先是要到https://mp.weixin.qq.com 申请一个公众号,并申请成为开发者.目前个人只

node.js Web应用框架Express.js(一)

什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健.友好的API变得快速又简单,Express 不对 node.js 已有的特性进行二次抽象,只是在它之上扩展了Web应用所需的功能. 开篇,这里就只做简单的介绍,整理一些有关express.js的资源,与大家一起学习 Express.js中文社区:http://expressjs.j

SSH2+LigerUI+JBPM5+Node.js实战开发视频教程

基于SSH2+LigerUI+JBPM5+Node.js技术实现大型J2EE金融行业财务预算系统 (第三季适合二年以上的开发者)课程分类:Java框架适合人群:中级课时数量:51课时用到技术:SSH2.LigerUI.JBPM5.Node.js技术涉及项目:大型J2EE金融行业财务预算系统咨询qq:1840215592课程项目所采用的技术架构为:struts2+spring+hibernate+LigerUI+jbpm5+mysql+自定义表单+node.js+webservice+思维导图+j

node.js web实时消息服务器后台推送技术方案---GoEasy

Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送速度快,代码简单易懂上手快浏览器兼容性:GoEasy推送支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等.支 持不同的开发语言:   GoEasy推送提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通过RestfulAPI来实现后台实时推送.

node.js项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)

1.用express开发站点时,怎么定义通用的头部和尾部 方案1:用类似asp时代的include添加,如ejs模板: <% include ../header.ejs %> <h1 class="page-header"> 这里是内容. 注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header </h1> <% include ../footer %> 方案2:用类似于MVC的lay

node.js Web实时消息后台服务器推送技术---GoEasy

越来越多的项目需要用到实时消息的推送与接收,怎样用node.js实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等. 支持不同的开发语言:    GoEasy推送 提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通