express框架使用,处理get和post请求

介绍

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。
当我们使用Express 框架的时候先要下载第三方插件Express模块
命令是 npm install express --save

Express框架的使用

  • 首先需要引入用到的模块
const express=require('express');
const bodyParser=require('body-parser');
const mysql=require('mysql');
  • 然后生成实例化对象
 const app = express();
  • 数据库链接配置
const conn = mysql.createConnection({
    
    
    host:'localhost',服务器地址
    user:'root',用户名
    password:'root',密码
    database:'yunmeng'链接的数据库名字
})
  • 需要对插件进行配置
app.use(bodyParser.urlencoded({
    
     extended: false }))
app.use(bodyParser.json())
  • 进行路由匹配 处理get请求 的路由
app.get('/', (req, res) => {
    
    
    res.send('Hello World')
})
  • 监听端口号
app.listen(3000, () => {
    
    
    console.log('server running ...');    
})
  • 此时一个简单的get请求就完成了

效果(http://localhost:3000/的时候页面显示Hello World)
对比下原生的get请求执行机制

const http = require('http');
const url = require('url');
http.createServer((req,res)=>{
    
    
   // 解析url地址 通过url.parse() 方法进行解析
  let   pathname= url.parse(req.url).pathname;
  if(pathname=='/zhao'){
    
    
    res.write('123');
    res.end();
  }
  console.log(pathname);//在服务器会显示pathname也就是你请求的内容
}).listen(3000,()=>{
    
    
    console.log('服务器开启');//测试服务器知道开启了
})

搭建项目结构

直接在 package.json 文件所在的目录下(项目的根目录),创建一个文件app.js(名字自定义)

const express = require('express');
const app = express();
//  针对post请求
const bodyParse = require('body-parser')
//  配置插件
app.use(bodyParser.urlencoded({
    
     extended: false }))
app.use(bodyParser.json())

//  配置静态资源目录   创建一个静态资源文件夹 public(自定义)   访问静态资源文件,访问路径不需要添加public 
//  配置多个静态资源目录
app.use(express.static('public'))

//  处理相关的页面逻辑  处理get请求
app.get('/url', (req, res) => {
    
    
    // 处理用户的请求  如果是get请求, 通过 req.query 获取用户传递的数据
    //  数据响应
    res.send(data)
})
//   处理post请求
app.post('/url', (req, res) => {
    
    
    // 处理用户的请求  如果是post请求, 通过 req.body 获取用户传递的数据 , 需要配置插件  body-parser 
    //  数据响应
    res.send(data)
})
//  处理动态路由  /:id 就是动态路由, 比如 /user/:id   可以匹配 /user/xxx 任意一个地址
//  动态路由的参数获取 : 通过 req.params 获取动态路由的参数 
app.get('/url/:id', (req, res) => {
    
    
    //  处理逻辑
    //  响应数据
    res.send(data);
})

app.listen(3000, () => {
    
    
    console.log('server ....')
})

express框架处理get和post请求的区别

get请求解析

get 请求的参数 通过 req.query 获取

执行query()方法的时候可以传递
第一个参数是查询语句
第二个参数可以是数组或者对象;
第三个参数中是错误err,成功后result的结果;

app.get('/login', (req, res) => {
    
    
    //  req.query
    console.log(req.query);   
     let {
    
    user, pwd} = req.query;
    //   sql语句的占位符 ? 
     let sql = `select * from admin where name = ? and pwd = ?`
    //   执行query()方法的时候可以传递 第二个参数可以是数组或者对象; 
     conn.query(sql, [user, pwd], (err, result) => {
    
    
        if(err){
    
    
            console.log(err);
            return;            
        }
        if(result.length){
    
    
             res.send(result)
        }else{
    
    
            res.send('用户名或者密码错误')
        }       
     })   
})

post 请求的参数
通过 req.body 获取
( 但是 不能直接使用,需要安装第三方插件 进行解析后使用; 插件名
body-parser)

   app.post('/register', (req, res) => {
    
    
    // req.body
    console.log(req.body);    
    res.send('这是注册页面')
})
// 1 引入express
const express = require('express');
//  nodejs的一个中间件(帮我们完成一些特定功能的插件)
const bodyParser = require('body-parser') 
const mysql = require('mysql')
//2  生成实例化对象 
const app = express();

//  数据库链接配置
const conn = mysql.createConnection({
    
    
    host:'localhost',
    user:'root',
    password:'root',
    database:'zuoye'
})

//  需要对插件进行配置 
app.use(bodyParser.urlencoded({
    
     extended: false }))
app.use(bodyParser.json())

//3  进行路由匹配  处理get请求 的路由
//  路由匹配:可以匹配很多路由
app.get('/', (req, res) => {
    
    
    res.send('ok')
})

//  get 请求的参数  通过 req.query 获取
app.get('/login', (req, res) => {
    
    
    //  req.query
    console.log(req.query);   
     let {
    
    user, pwd} = req.query;
    //   sql语句的占位符 ? 
     let sql = `select * from admin where name = ? and pwd = ?`
    //   执行query()方法的时候可以传递 第二个参数可以是数组或者对象; 
     conn.query(sql, [user, pwd], (err, result) => {
    
    
        if(err){
    
    
            console.log(err);
            return;            
        }
        if(result.length){
    
    
             res.send(result)
        }else{
    
    
            res.send('用户名或者密码错误')
        }       
     })   
})

//  post 请求的参数  通过 req.body 获取 但是 不能直接使用,需要安装第三方插件 进行解析后使用; 插件名 bodyParser
app.post('/register', (req, res) => {
    
    
    // req.body
    console.log(req.body);    
    res.send('这是注册页面')
})


//  
//4  监听端口号
app.listen(3000, () => {
    
    
    console.log('server running ...');    
})

请求方式对应不同的操作

  • get : 获取数据

  • post : 提交数据

  • put : 修改数据

  • delete : 删除数据

常用的请求方式
在这里插入图片描述

restful

为什么要使用RESTful架构?
REST 是 Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构
RESTful 架构可以充分的利用 HTTP 协议的各种功能,是 HTTP 协议的最佳实践
RESTful API 是一种软件架构风格、设计风格,可以让软件更加清晰,更简洁,更有层次,可维护性更好

restful 风格接口

接口格式:
请求 = 动词 + 宾语

动词

动词通常就是五种 HTTP 方法,对应 CRUD(C:create 创建;R:read 读取; U:update 更新;D:delete 删除) 操作。

  • GET:读取(Read)
  • POST:新建(Create)
  • PUT:更新(Update)
  • PATCH:更新(Update),通常是部分更新
  • DELETE:删除(Delete)

宾语

宾语 URL 应该全部使用名词复数,可以有例外,比如搜索可以使用更加直观的 search 。
过滤信息(Filtering) 如果记录数量很多,API应该提供参数,过滤返回结果。 ?limit=10 指定返回记录的数量 ?offset=10 指定返回记录的开始位置。

示例:

GET /zoos 列出所有动物园
POST /zoos 新建一个动物园
GET /zoos/:id 获取某个指定动物园的信息
PUT /zoos/:id 更新某个指定动物园的全部信息
PATCH /zoos/:id 更新某个指定动物园的部分信息
DELETE /zoos/:id 删除某个动物园
GET /zoos/:id/animals 列出某个指定动物园的所有动物
DELETE /zoos/:id/animals/:id 删除某个指定动物园的指定动物

参考连接

http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html?spm=a2c4e.10696291.0.0.711d19a4EMVAJQ

猜你喜欢

转载自blog.csdn.net/z18237613052/article/details/115029310