前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Express 简单入门

Express 简单入门

作者头像
Innei
发布2021-12-28 14:23:55
2.2K0
发布2021-12-28 14:23:55
举报
文章被收录于专栏:静之森

Express 是一个快速的 web 开发框架,相比 node 原先的 http 库开发简单很多,上手也很容易。

快速开始

使用 Express,可以很快的搭建一个服务器。

首先建立一个文件夹,对项目进行初始化。

bash

代码语言:javascript
复制
1mkdir express-demo
2npm init -f
3npm i express
4touch index.js

COPY

编辑 index.js

js

代码语言:javascript
复制
1const express = require("express");
2
3const app = express();
4
5app.get('/', (req, res) => {
6  res.send('hellp, express')
7})
8
9app.listen(3000, () => {
10  console.log('server listen on http://127.0.0.1:3000')
11})

COPY

这样一个简单的服务器做好了,用浏览器访问127.0.0.1:3000 将会看到 hello, express

托管静态路由

使用中间件 express.static() 可以快捷的托管某个文件夹内的网页。

js

代码语言:javascript
复制
1app.use('/', express.static('demo')) // 托管 demo 文件夹到网站根目录

COPY

如果路由冲突,则以第一个路由为准。

跨域

什么是同源,什么是跨域。

一般浏览器会禁止跨域的 ajax 请求,跨域指,与当前地址(...)不同的其他地址,端口,协议,域名。

一般的只要服务器发出的请求加上跨域请求头,允许跨域就行了。

在 node 中我们可以使用 cors。

安装 cors

bash

代码语言:javascript
复制
1npm i cors

COPY

在 js 中引入

js

代码语言:javascript
复制
1app.use(require('cors')())

COPY

连接 mongdb

使用 mongoose 连接和操作 mongodb。

bash

代码语言:javascript
复制
1npm i mongoose

COPY

在 js 中加入

js

代码语言:javascript
复制
1const mongoose = require("mongoose");
2mongoose.connect("mongodb://127.0.0.1:27017/express-test", {
3  useNewUrlParser: true
4}); // 使用新的地址解析器
5
6const Names = mongoose.model( // 定义一个新的模型
7  "Names", // 相当于 SQL 的表的名称
8  new mongoose.Schema({ // 相当于 SQL 的字段类型
9    name: String,
10    age: Number
11  })
12);

COPY

下面实现POST /names时把数据录入 mongodb 中。

js

代码语言:javascript
复制
1app.use(express.json())  // 开启 express 的 json 数据处理
2
3app.post('/names', async (req, res) => {
4  const data = req.body;
5  res.send(await Names.create(data))
6})

COPY

操作数据库时必须使用 async 函数,操作时使用 await 阻塞代码运行。否则会出现一直等待的情况。

查询数据

定义一个路由 /names,get 请求时返回所以记录的 json 格式。

js

代码语言:javascript
复制
1app.get("/names", async (req, res) => {
2  //res.send(await Names.find());
3  res.send(await Names.find().sort({ _id: 1 })); //  1 正序排序 -1 倒序
4});

COPY

定义一个子路由,子路径为参数对象的参数

js

代码语言:javascript
复制
1app.get("/names/:name", async (req, res) => {
2  const name = req.params.name;
3  res.send(await Names.findOne({ name }));
4});

COPY

修改数据

使用 put 请求修改数据库中的请求。

js

代码语言:javascript
复制
1app.put("/names/:name", async (req, res) => {
2  const params = req.params.name;
3  const name = await Names.findOne({ name: params }); // find 接受一个对象 键: 数据库中的字段 值: 需要查找的字段
4  name.name = req.body.name;
5  await name.save();
6  res.send(name);
7});

COPY

删除数据

js

代码语言:javascript
复制
1app.delete('/names/:name', async (req, res) => {
2  const name = await Names.findOne({name: req.params.name})
3  await name.remove()
4  res.send({
5    success: true
6  })
7})

COPY

REST Client 测试

http

代码语言:javascript
复制
1@url=http://127.0.0.1:8000/
2### get
3get http://127.0.0.1:8000/names
4### get
5get {{url}}names/abc
6
7### post name 
8post {{url}}names
9Content-Type: application/json
10
11{
12    "name": "ab",
13    "age": 8
14}
15
16### put edit 
17
18put {{url}}names/abc
19Content-Type: application/json
20
21{
22   "name": "qq"
23}
24
25### del
26
27DELETE {{url}}names/ab
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速开始
  • 托管静态路由
  • 跨域
  • 连接 mongdb
  • 查询数据
  • 修改数据
  • 删除数据
  • REST Client 测试
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档