nodejs接口联动获取req的各种类型数据,搭建可视化流程引擎平台

news2024/11/24 9:20:16

nodejs接口联动获取req的各种类型数据,搭建可视化流程引擎平台

  • 搭建nodejs服务
  • 创建对外开放端口,获取基础数据
    • GET—query
    • GET—params
    • POST
  • 联动MYSQL数据库
    • 获取websites表的所有书
      • 链接数据库
  • 插入

搭建nodejs服务

考虑跨域等性能,简易的工程化,采用express框架

接下来我们就来安装 body-parser express的中间件 body-parser
解析客户端请求的body中的内容,JSON编码处理和url编码处理
文件上传看我之前的博客内容

const express = require('express');
const bodyParser = require('body-parser');
const Aixpor = require("./options")
const app = express()
const port = 8088

app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json());


//设置跨域访问
app.all("*", function(req, res, next) {
	//设置允许跨域的域名,*代表允许任意域名跨域
	res.header("Access-Control-Allow-Origin", req.headers.origin || '*');
	 // //只允许http://xxx.xx.xx/可跨
    //res.header('Access-Control-Allow-Origin', 'http://xxx.xx.xx/');
	//允许的header类型
	res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
	//跨域允许的请求方式 
	res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
	// 可以带cookies
	res.header("Access-Control-Allow-Credentials", true);
	if (req.method == 'OPTIONS') {
		res.sendStatus(200);
	} else {
		next();
	}
})

app.listen(port, () => {
	console.log(`Example app listening at http://localhost:${port}`)
})

创建对外开放端口,获取基础数据

GET—query

http://localhost:8080/?age=1

app.get('/', function (req, res) {
  var params = req.query
  res.send(params)
})
//{"age": "1"}

在这里插入图片描述

GET—params

http://localhost:8080/12/url

app.get('/testcommit/:id?/url', function (req, res) {
  var params = req.params
  res.send(params)
})
// {"id": "13"}
//此处的问号代表的为可选参数,非必写参数

当然也可以进行组合发送
在这里插入图片描述

POST

app.post('/post', function (req, res) {
 var params = req.body
  console.log(params)
  //{ name:"勇敢牛牛" }
})

在这里插入图片描述

联动MYSQL数据库

获取websites表的所有书

链接数据库

let mysql = require('mysql');

let connection = mysql.createConnection({
  host:"localhost",
  port:"3306",
  database:'test_1',
  user:'root',
  password:'12345678',
  
})

connection.connect();
// 导出
exports.connection = connection;

这里是test_1数据库下的websites表格式数据内容。
在这里插入图片描述

app.get('/testcommit/:id?',(req,res)=>{
    res.status(200);
    let sql = "SELECT * FROM `websites` u "
    connection.query(sql,(err,result)=>{
      if(err){
        console.log('查询出错',err);
        res.json([])
        return;
      }
      res.json(result)
    })
  })

插入

app.post('/testcommit',(req,res)=>{
    let body = req.body;
    console.log(Object.values(body));
    
    let addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';
    connection.query(addSql,Object.values(body),(err,result)=>{
      if(err){
        console.log('插入出错',err);
        res.status(500);
        res.json({message:"添加数据出错啦"})
        return;
      }
      res.status(200);
      res.json({message:result})
    })
  })
}

在这里插入图片描述
根据这些http的menth方法,url,path,body等等标识来判断,唯一的资源判断。进行业务逻辑处理。

这是MySQL插入数据成功后返回的结果字段的含义:

- `fieldCount`: 返回结果中的字段数目。
- `affectedRows`: 受影响的行数,表示成功插入的行数。
- `insertId`: 插入的记录的自增ID值。如果表定义了自增ID字段,则返回新插入行的自增ID值;否则返回0- `serverStatus`: 服务器状态标识,表示执行插入操作后的服务器状态。
- `warningCount`: 警告数目,表示在执行插入操作期间发出的警告数量。
- `message`: 服务器返回的消息或错误信息。
- `protocol41`: 表示服务器是否使用的是MySQL 4.1+协议。
- `changedRows`: 发生更改的行数,对于插入操作,由于是新增数据,所以没有更改的行,该值通常为0

这些字段提供了关于插入操作的相关信息,包括受影响的行数、自增ID值以及服务器状态等。可以根据需要使用这些字段来进行后续的处理或判断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot和Mybatis用两种方式实现分页查询

上一篇文章中封装了通用的返回结果、通用分页结果。本文具体记录一下如何基于Mybatis实现分页查询。 参考文章: Github:pagehelper-spring-boot Github:HowToUse.md mybatis-plus分页查询三种方法 MyBatis-Plus分页插件 系列文章指路👉 系列文章-基于Sp…

这会是下一代的 Java 程序员的技术栈吗?

Servlet 与 Reactive 技术栈 打开 Spring 的官方文档我们在 Reactive 一栏中可以看到下面的架构图,其中可以很明显的看到 Reactive 的技术栈跟 Servlet 技术栈是完全并行的。意思是说我们日常开发的 Servlet web 类型只是一半的内容,还有另外一半世界就…

TI AM64x开发板规格书(双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F,主频1GHz)

1 评估板简介 创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 单/四核Cortex-R5F 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,高性能低功耗,稳…

3.2C++抽象类

C 抽象类 C的抽象类是指至少包含一个纯虚函数的类,不能被实例化。 抽象类的作用是为了实现接口的统一规范,使得不同的子类可以通过实现相同的纯虚函数来实现不同的行为。 定义抽象类时,需要在类中至少包含一个纯虚函数。 抽象类不能被实例…

idea如何连接数据库

输入数据库的用户名和密码就行 Database这里些数据库的名字 快速打开数据库设计 这句话是说时区有问题:因为Mysql用的是美国时区,要搞成中国时区: set global time_zone8:00; 打开cmd窗口: 输入 mysql -u root -p 密码&…

MySql高级篇-006 MySQL架构篇-02MySQL的数据目录:数据库下的主要目录结构、文件系统如何存储数据

第02章_MySQL的数据目录 1.MySQL8的主要目录结构 # 查询名称叫做mysql的文件目录都有哪些[rootatguigu07 ~]# find / -name mysql安装好MySQL 8之后,我们查看如下的目录结构: 1.1 数据库文件的存放路径 MySQL数据库文件的存放路径:/var/…

华为手环8 六月免费表盘上线,让你的腕上表盘更丰富多彩

在如今这个科技与艺术相互融合的时代!工程师们给华为手环8花粉朋友准备的6月这一期好看又免费表盘已经上线。你可以根据自己的审美,选择一款最适合自己的表盘,展现出自己的个性和品味。快来选择你的专属表盘,让华为手环8成为你独特…

移动WEB开发之rem适配布局

css基础(一)css基础(一)_上半场结束,中场已休息,下半场ing的博客-CSDN博客Emmet语法Emmet语法_上半场结束,中场已休息,下半场ing的博客-CSDN博客css基础(二)c…

途乐证券|股市里的游资是什么?有什么特点?

股市是一个充满风险和机会的地方,吸引了各类投资者的目光,游资就是其中一种。那么股市里的游资是什么?有什么特点?途乐证券也为大家准备了相关内容,以供参考。 股市里的游资是什么? 一般来说,股…

【JavaScript】使用qrcode生成二维码

QRCode简介: QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。 使用步骤: 点击下载:https://github.com/davidshimjs/qrcodejs 或者mirrors / davidshimjs / qrco…

selenium 自动化测试 1-如何搭建自动化测试环境,搭建环境过程应该注意的问题

目录 前言: 1、selenium的介绍 2、selenium的版本介绍 3. selenium工作原理 4. selenium安装 4.1 安装selenium 4.2 安装浏览器驱动 4.3 安装浏览器 4.4 验证安装结果 5. 浏览器基本操作 前言: 搭建Selenium自动化测试环境是进行Web应用程序自…

京东到家小程序-在性能及多端能力的探索实践 | 京东云技术团队

一、前言 京东到家小程序最初只有微信小程序,随着业务的发展,同样的功能需要支持容器越来越多,包括支付宝小程序、京东小程序、到家APP、京东APP等,然而每个端分开实现要面临研发成本高、不一致等问题。 为了提高研发效率&#…

关于栈和队列的几个题

思维导图: 1.匹配括号 题目如下: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以…

【灾报警主机联网问题】

火灾报警主机联网问题一直是各消防项目中的难点,特别是管廊等长距离通讯中,如何保证通讯信号长期稳定可靠的运行是需要工程重点解决的问题,而LCAN-FOBR系列环网冗余式CAN光纤转换器提供二路光通道和一路CAN通道,实现CAN与光纤之间…

基于ENVI的遥感影像的非监督分类

ENVI包括了ISODATA和K-Mean两种非监督分类方法。 ISODATA(Iterative Self-Orgnizing Data Analysize Technique)是一种重复自组织数据分析技术,计算数据空间中均匀分布的类均值,然后用最小距离技术将剩余像元进行迭代聚合&#x…

常见分子直径

He 0.26 H2 0.289 NO 0.317 CO2 0.33 Ar 0.34 O2 0.346 N2 0.364 CO 0.376 CH4 0.38 C2H4 0.39 Xe 0.396 C3H8 0.43 SO2 0.28 气体分子 分子直径/nm 水0.27~0.32 氨0.365~0.38 苯0.65~0.68 乙烷0.40~0.47 乙烯…

华为OD机试真题 Python 实现【快速开租建站】【2023Q1 200分】,附详细解题思路

一、题目描述 当前IT部门支撑了子公司颗粒化业务,该部门需要实现为子公司快速开租建站的能力,建站是指在一个全新的环境部署一套IT服务。 每个站点开站会由一系列部署任务项构成,每个任务项部署完成时间都是固定和相等的,设为1。…

项目——学生信息管理系统5

目录 教师模块功能的实现 创建一个 Teacher 实体类 创建 添加老师界面 AddTeacherFrm 注意创建成 JInternalFrame 类型 页面的制作 给添加按钮绑定事件 提供一个重置表单功能 回到 MainFrm 添加教师管理的按钮 给添加教师按钮绑定事件 测试添加教师功能 创建教师信息管…

Day8——操作系统基础windows

文章目录 操作系统基础操作系统的定义 什么是windows 操作系统基础 操作系统的定义 什么是windows

gin RouterGroup 方法概览

路由组 RouterGroup是gin 里面的路由组,主要作用是实现gin的路由。 RouterGroup是嵌套在了Engine内部,实际上调用Engine的get,post等方式就是RouterGroup的实现。 另外RouterGroup还实现了如下两个接口: Engine相当于RouterGrou…