# 创建并切换到 myapp 目录
mkdir myapp
cd myapp
# 初始化 package.json 文件
npm init -y
# 安装 express 到项目中
npm i express
参考文档:http://expressjs.com/en/starter/installing.html
// 0. 加载 Express
const express = require("express");
// 1. 调用 express() 得到一个 app
// 类似于 http.createServer()
const app = express();
// 2. 设置请求对应的处理函数
// 当客户端以 GET 方法请求 / 的时候就会调用第二个参数:请求处理函数
app.get("/", (req, res) => {
res.send("hello world");
});
// 3. 监听端口号,启动 Web 服务
app.listen(3000, () => console.log("app listening on port 3000!"));
参考文档:http://expressjs.com/en/starter/hello-world.html
路由(Routing)是由一个 URI(或者叫路径标识)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何处理响应客户端请求。
每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这个/些函数将被执行。
路由的定义的结构如下:
app.METHOD(PATH, HANDLER);
其中:
// 当你以 GET 方法请求 / 的时候,执行对应的处理函数
app.get("/", function(req, res) {
res.send("Hello World!");
});
// 当你以 POST 方法请求 / 的时候,指定对应的处理函数
app.post("/", function(req, res) {
res.send("Got a POST request");
});
app.put("/user", function(req, res) {
res.send("Got a PUT request at /user");
});
app.delete("/user", function(req, res) {
res.send("Got a DELETE request at /user");
});
// 开放 public 目录中的资源
// 不需要访问前缀
app.use(express.static("public"));
// 开放 files 目录资源,同上
app.use(express.static("files"));
// 开放 public 目录,限制访问前缀
app.use("/public", express.static("public"));
// 开放 public 目录资源,限制访问前缀
app.use("/static", express.static("public"));
// 开放 publi 目录,限制访问前缀
// path.join(__dirname, 'public') 会得到一个动态的绝对路径
app.use("/static", express.static(path.join(__dirname, "public")));
参考文档:http://expressjs.com/en/starter/static-files.html
基础路由
var express = require("express");
var app = express();
// respond with "hello world" when a GET request is made to the homepage
app.get("/", function(req, res) {
res.send("hello world");
});
// GET method route
app.get("/", function(req, res) {
res.send("GET request to the homepage");
});
// POST method route
app.post("/", function(req, res) {
res.send("POST request to the homepage");
});
app.get("/", function(req, res) {
res.send("root");
});
app.get("/about", function(req, res) {
res.send("about");
});
app.get("/random.text", function(req, res) {
res.send("random.text");
});
app.get("/ab?cd", function(req, res) {
res.send("ab?cd");
});
app.get("/ab+cd", function(req, res) {
res.send("ab+cd");
});
app.get("/ab*cd", function(req, res) {
res.send("ab*cd");
});
app.get("/ab(cd)?e", function(req, res) {
res.send("ab(cd)?e");
});
app.get(/a/, function(req, res) {
res.send("/a/");
});
app.get(/.*fly$/, function(req, res) {
res.send("/.*fly$/");
});
Route path: /users/:userId/books/:bookId
Request URL: http://localhost:3000/users/34/books/8989
req.params: { "userId": "34", "bookId": "8989" }