文档章节

Node.js Express 路由选择

hakase
 hakase
发布于 2016/09/18 22:25
字数 369
阅读 24
收藏 0

实现get请求的路由

const express = require('express');
const http = require('http');

const app = express();

app.set('port', 8080);

app.get('/', (req, res) => {
    res.send('hello express');
});

app.get('/main', (req, res) => {
    const html = [
        "<h1> Express <h1>",
        "<p> Main <p>"
    ].join('\n');
    res.send(html);
});

app.get('/users/:userId', (req, res) => {
    res.send('<h1> Hello, User ' + req.params.userId + ' <h1>');
});

//catch route param
app.param('userId', (req, res, next, val) => {
    console.log("request with userid: " + val);
    next();
});

app.get(/\/user\/(\d+)\/?(edit)?/, (req, res) => {
    var msg = '';
    console.log(req.params[0]);
    if (req.params[1] === 'edit') {
        msg = "editing " + msg;
    } else {
        msg = "viewing " + msg;
    }
    res.send(msg);
});

http.createServer(app).listen(app.get('port'), () => {
    console.log('express server listening on port ' + app.get('port'));
});

在浏览器中输入以下网址进行测试

127.0.0.1:8080

127.0.0.1:8080/main

127.0.0.1:8080/users/guest

127.0.0.1:8080/users/visitor

127.0.0.1:8080/user/a100       # CAT NOT GET

127.0.0.1:8080/user/200

127.0.0.1:8080/user/200/edit

Request对象和Response对象的一些属性

app.get('/', (req, res) => {

    const response = '<html><head><title>Simple Send</title></head>' +
                     '<body><h1>Hello Express</h1></body></html>';
    res.status(200);

    res.set({
        'Content-Type': 'text/html',
        'Content-Length': response.length
    });

    res.send(response);

    console.log('response finished ?  :\t' + res.finished);
    console.log('headers sent:\t' + res.headerSent);

    console.log('URL:\t' + req.originalUrl);
    console.log('Protocol:\t' + req.protocol);
    console.log('IP:\t' + req.ip);
    console.log('Path:\t' + req.path);
    console.log('Host:\t' + req.hostname);
    console.log('Method:\t' + req.method);
    console.log('Fresh:\t' + req.fresh);
    console.log('Stale:\t' + req.stale);
    console.log('Secure:\t' + req.secure);

    console.log('Query:\t' + JSON.stringify(req.query));
    console.log('Headers:\t' + JSON.stringify(req.headers, null, 2));

    console.log('UTF-8:\t' + req.acceptsCharsets('utf8'));

    console.log('Connection:\t' + req.get('connection'));
});

发送JSON响应

app.get('/json', (req, res) => {
    app.set('json spaces', 4);
    res.json({
        name: "ming",
        age: 20,
        fruit: [ "apple", "banana", "orange" ],
        lang: {
            java: "good",
            cpp: "bad"
        }
    });
});

app.get('/error', (req, res) => {
    app.set('json spaces', 4);
    res.status(404).json({
        code: 404,
        status: "false",
        message: "Not Found"
    });
});

显示文件内容

app.get('/file', (req, res) => {
    res.sendFile('index.html', {
        root: './views/'
    }, (err) => {
        if (err) {
            console.log('error');
            throw err;
        } else {
            console.log('success');
        }
    });
});

提供下载和重定向

app.get('/redirect', (req, res) => {
    res.redirect('/file');
});

app.get('/download', (req, res) => {
    res.download('./views/index.html', (err) => {
        if (err) {
            console.log('download error');
            throw err;
        } else {
            console.log('download success');
        }
    });
});

 

© 著作权归作者所有

hakase
粉丝 7
博文 39
码字总数 23663
作品 0
南京
私信 提问
Express新手入坑笔记之动态渲染HTML

在日常项目中,我喜欢用Django做后端, 因为大而全 如果只是写一个简单服务的话, Express是更好的选择, Express是基于nodejs的一个后端框架,特点是简单,轻量, 容易搭建, 而且性能非凡,...

木子昭
2018/12/12
0
0
Nodejs + Express 实现多用户博客系统(23 个视频)

Nodejs 实现最常见的登录注册功能,结合管理文章等功能,实现大家所期待的多用户博客系统。 总播放时长:135 分钟 作者:hfpp2012 类别:后端 技术分类:Nodejs Node.js + Express 实现多用户...

rails365
2018/08/15
0
0
koahubjs 1.0.0 发布,基于 Koa.js 快速开发框架

koahubjs 发布 1.0.0 正式版,基于 Koa.js 的快速开发框架。 KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架。可以直接在项目里使用 ES6/7(Generator Function, Class, Async ...

einsqing
2017/01/07
1K
6
Node.js与Express4安装与配置

Nodejs简介 Node.js 基于 Chrome JavaScript 运行环境,用于便捷地搭建快速、可扩展的网络应用。 它使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效, 非常适合于运行在分布式设备...

jackguo
2016/10/23
86
0
Node.js 框架对比之 Express VS Koa

背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣。 Node 服务层作用: 请求代理 传统做法是后端提供 api ...

大灰狼的小绵羊哥哥
2018/10/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用原生js对表格排序

本文转载于:专业的前端网站➸用原生js对表格排序 阿里的模拟笔试题,当时时间有限没写出来,其实是因为自己对原生dom操作不熟悉,这里补一下。 题目的大意是有一个表格,如代码所示 <table>...

前端老手
36分钟前
6
0
IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

HTML5有一些新的表单元素:<datalist>、<keygen>、<output>。不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性,仍然可以显示为常规的表单元素。 1 <datalist>元素 ...

老码农的一亩三分地
38分钟前
4
0
【朝花夕拾】Android自定义View篇之(一)View绘制流程

https://www.cnblogs.com/andy-songwei/p/10955062.html

shzwork
40分钟前
5
0
Qt编写自定义控件70-扁平化flatui

一、前言 对于现在做前端开发人员来说,FlatUI肯定不陌生,最近几年扁平化的设计越来越流行,大概由于现在PC端和移动端的设备的分辨率越来越高,扁平化反而看起来更让人愉悦,而通过渐变色产...

飞扬青云
49分钟前
3
0
教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部