Express 框架

简介: Express 框架
  • Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。


  • 使用 Express 可以快速地搭建一个完整功能的网站。


Express 框架核心特性:


  • 可以设置中间件来响应 HTTP 请求。


  • 定义了路由表用于执行不同的 HTTP 请求动作。


  • 可以通过向模板传递参数来动态渲染 HTML 页面。


第一个 Express 框架实例


接下来我们使用 Express 框架来输出 "Hello World"。


以下实例中我们引入了 express 模块,并在客户端发起请求后,响应 "Hello World" 字符串。


创建 express_demo.js 文件,代码如下所示:

//express_demo.js 文件
var express = require('express');
var app = express();
app.get('/', function (req, res) {
   res.send('Hello World');
})
var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
})


可以在浏览器中访问 http://127.0.0.1:8081


请求和响应


Express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。

app.get('/', function (req, res) {
   // --
})


request 和 response 对象的具体介绍:


Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。常见属性有:


req.app:当callback为外部文件时,用req.app访问express的实例


req.baseUrl:获取路由当前安装的URL路径


req.body / req.cookies:获得「请求主体」/ Cookies


req.fresh / req.stale:判断请求是否还「新鲜」


req.hostname / req.ip:获取主机名和IP地址


req.originalUrl:获取原始请求URL


req.params:获取路由的parameters


req.path:获取请求路径


req.protocol:获取协议类型


req.query:获取URL的查询参数串


req.route:获取当前匹配的路由


req.subdomains:获取子域名


req.accepts():检查可接受的请求的文档类型


req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码


req.get():获取指定的HTTP请求头


req.is():判断请求头Content-Type的MIME类型


Response 对象 - response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据。常见属性有:


res.app:同req.app一样


res.append():追加指定HTTP头


res.set()在res.append()后将重置之前设置的头


res.cookie(name,value [,option]):设置Cookie


opition: domain / expires / httpOnly / maxAge / path / secure / signed


res.clearCookie():清除Cookie


res.download():传送指定路径的文件


res.get():返回指定的HTTP头


res.json():传送JSON响应


res.jsonp():传送JSONP响应


res.location():只设置响应的Location HTTP头,不设置状态码或者close response


res.redirect():设置响应的Location HTTP头,并且设置状态码302


res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。


res.send():传送HTTP响应


res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type


res.set():设置HTTP头,传入object可以一次设置多个头


res.status():设置HTTP状态码


res.type():设置Content-Type的MIME类型


路由


我们已经了解了 HTTP 请求的基本应用,而路由决定了由谁(指定脚本)去响应客户端请求。


在HTTP请求中,我们可以通过路由提取出请求的URL以及GET/POST参数。

var express = require('express');
var app = express();
app.use(express.static('.'));
//  GET请求: 输出 "Hello World"
// app.get('/', function (req, res) {
//    console.log("主页 GET 请求");
//    res.send('主页 GET 请求');
// })
// GET 请求: 静态资源
app.get('/index.html', function (req, res) {
   res.sendFile( __dirname + "/" + "index.html" );
})
// GET 请求并解析返回的参数
app.get('/process_get', function (req, res) {
   // 输出 JSON 格式
   res.end(JSON.stringify(req.query));
})
//  POST 请求
app.post('/process_post', function (req, res) {
   console.log("主页 POST 请求");
   res.end(JSON.stringify(req.body));
})
// 使用正则匹配符合条件的页面 abcd, abxcd, ab123cd
app.get('/ab*cd', function(req, res) {   
   console.log("/ab*cd GET 请求");
   res.send('正则匹配');
})
var server = app.listen(80, function () {
  var host = server.address().address
  var port = server.address().port
  console.log("应用实例,访问地址为 http://%s:%s", host, port)
})


curl进行post请求

未完成...


静态文件


Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。


你可以使用 express.static 中间件来设置静态文件路径。例如,如果你将图片文件放在 images 目录下

node_modules
server.js
images
images/logo.png


你可以这么写:app.use('/public', express.static('.'));


访问资源 curl -I localhost/images/logo.png, 然后发现查看头信息成功.


express还能实现:


  • 文件上传


  • Cookie 管理


但是这需要 require 的配合。


目录
相关文章
|
26天前
|
Web App开发 JavaScript 前端开发
构建高效后端服务:Node.js与Express框架的实战指南
【9月更文挑战第6天】在数字化时代的潮流中,后端开发作为支撑现代Web和移动应用的核心,其重要性不言而喻。本文将深入浅出地介绍如何使用Node.js及其流行的框架Express来搭建一个高效、可扩展的后端服务。通过具体的代码示例和实践技巧,我们将探索如何利用这两个强大的工具提升开发效率和应用性能。无论你是后端开发的新手还是希望提高现有项目质量的老手,这篇文章都将为你提供有价值的见解和指导。
|
2月前
|
JavaScript 前端开发 中间件
构建高效后端服务:Node.js与Express框架的完美搭档
【8月更文挑战第28天】在追求高性能、可扩展和易维护的后端开发领域,Node.js和Express框架的组合提供了一种轻量级且灵活的解决方案。本文将深入探讨如何利用这一组合打造高效的后端服务,并通过实际代码示例展示其实现过程。
|
2月前
|
JavaScript 中间件 API
深入浅出Node.js后端框架——Express
【8月更文挑战第27天】在这篇文章中,我们将一起探索Node.js的热门框架Express。Express以其简洁、高效的特点,成为了许多Node.js开发者的首选框架。本文将通过实例引导你了解Express的核心概念和使用方法,让你快速上手构建自己的Web应用。
|
2月前
|
存储 JavaScript NoSQL
构建高效Web应用:使用Node.js和Express框架
【8月更文挑战第30天】本文将引导你了解如何使用Node.js和Express框架快速搭建一个高效的Web应用。通过实际的代码示例,我们将展示如何创建一个简单的API服务,并讨论如何利用中间件来增强应用功能。无论你是新手还是有经验的开发者,这篇文章都将为你提供有价值的见解。
|
5天前
|
Web App开发 JavaScript 前端开发
构建高效Web应用:Node.js与Express框架的深度整合
【9月更文挑战第28天】在现代Web开发领域,Node.js和Express框架的结合已成为打造高性能、易扩展应用的黄金组合。本文将深入探讨如何利用这一技术栈优化Web应用架构,提供具体实践指导,并分析其性能提升的内在机制。通过代码示例,我们将展示从基础搭建到高级功能的实现过程,旨在为开发者提供一条清晰的学习路径,以实现技术升级和项目效率的双重提升。
14 3
|
14天前
|
缓存 监控 JavaScript
构建高效后端服务:Node.js与Express框架的完美结合
【9月更文挑战第18天】在数字化时代的浪潮中,后端服务的效率和稳定性成为了企业竞争力的关键。本文将深入探讨如何使用Node.js和Express框架来构建一个既高效又稳定的后端服务,同时通过实际代码示例,展示如何优化性能并确保服务的高可用性。
|
21天前
|
Web App开发 缓存 JavaScript
构建高效后端服务:Node.js与Express框架的完美结合
【9月更文挑战第11天】本文将引导开发者探索如何利用Node.js和Express框架搭建一个高效的后端服务。文章不仅深入讲解了这两个工具的核心概念,还通过实际示例展示了它们的强大功能和易用性。读者将学会如何处理HTTP请求、设计RESTful API以及优化应用性能。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识,帮助你在后端开发领域更进一步。
|
4天前
|
JSON JavaScript 前端开发
构建高效Web应用:Node.js与Express框架的完美结合
【9月更文挑战第28天】在现代Web开发中,Node.js和Express框架的结合为创建高性能、易扩展的应用提供了强有力的支持。本文将深入探讨如何利用这两种技术构建一个简单但功能强大的Web服务,同时提供代码示例以加深理解。
|
2月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的深度整合
【8月更文挑战第27天】 在现代Web开发中,后端服务的高效性至关重要。本文深入探讨了如何利用Node.js的非阻塞I/O特性和Express框架的简洁性来打造高性能的后端服务。我们将通过具体案例,展示如何在不牺牲代码可读性和可维护性的前提下,实现高效的请求处理和服务端逻辑。文章旨在为开发者提供一个清晰的指导,帮助他们在构建后端服务时做出更明智的技术选择。
|
2月前
|
存储 缓存 JavaScript
构建高效后端服务:Node.js与Express框架的实战应用
【8月更文挑战第2天】在数字化时代的浪潮中,后端服务的构建成为了软件开发的核心。本文将深入探讨如何利用Node.js和Express框架搭建一个高效、可扩展的后端服务。我们将通过实际代码示例,展示从零开始创建一个RESTful API的全过程,包括路由设置、中间件使用以及数据库连接等关键步骤。此外,文章还将触及性能优化和安全性考量,旨在为读者提供一套完整的后端开发解决方案。让我们一同走进Node.js和Express的世界,探索它们如何助力现代Web应用的开发。