REST API基于Express.jsmysql2的简单demo

Posted _less is more

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REST API基于Express.jsmysql2的简单demo相关的知识,希望对你有一定的参考价值。

1、启动mysql

docker run --rm -d -v "C:/Users/ASUS/Desktop/db":/var/lib/mysql -p 3306:3306 -e MYSQL_USER=user -e MYSQL_ROOT_PASSWORD=mypassword -e MYSQL_PASSWORD=mypassword -e MYSQL_DATABASE=testdb mysql:latest --default-authentication-plugin=mysql_native_password

桌面下的db文件夹会自动创建

进入MySQL

docker exec -it 68 bash

注:container删除后数据库文件依然会在桌面的db文件夹下,只需要下次运行mysql时指定同样的映射目录即可,不过上面的docker run得改一下

docker run --rm -d -v "C:/Users/ASUS/Desktop/db":/var/lib/mysql -p 3306:3306 -e MYSQL_USER=user -e MYSQL_ROOT_PASSWORD=mypassword -e MYSQL_PASSWORD=mypassword mysql:latest --default-authentication-plugin=mysql_native_password

即去掉自动创建testdb数据库那一句,不然之前创建过了,会导致数据库创建失败启动不了container

2、以root身份进入mysql

mysql -uroot -pmypassword

3、创建一个数据库

CREATE DATABASE freedbtech_language;

查看

show databases;

可以看到testdb和刚创建的freedbtech_language都在


也可以这样查
show databases like ‘free%’;

4、创建表schema

首先进入数据库

use freedbtech_language;

创建schema

CREATE TABLE programming_languages
(
	id INT(11) NOT NULL auto_increment ,
	name VARCHAR(255) NOT NULL ,
	released_year INT NULL ,
	githut_rank INT NULL ,
	pypl_rank INT NULL ,
	tiobe_rank INT NULL ,
	created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
	updated_at DATETIME on UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT 
	CURRENT_TIMESTAMP ,
	PRIMARY KEY (id),
	UNIQUE idx_name_unique (name(255))
)engine = innodb charset=utf8mb4 COLLATE utf8mb4_general_ci;

查看表

show tables;

查看表schema

describe programming_languages;

插入数据

INSERT INTO 
programming_languages(id,name,released_year,githut_rank,pypl_rank,tiobe_rank) 
VALUES 
(1,'javascript',1995,1,3,7),
(2,'Python',1991,2,1,3),
(3,'Java',1995,3,2,2),
(4,'TypeScript',2012,7,10,42),
(5,'C#',2000,9,4,5),
(6,'php',1995,8,6,8),
(7,'C++',1985,5,5,4),
(8,'C',1972,10,5,1),
(9,'Ruby',1995,6,15,15),
(10,'R',1993,33,7,9),
(11,'Objective-C',1984,18,8,18),
(12,'Swift',2015,16,9,13),
(13,'Kotlin',2011,15,12,40),
(14,'Go',2009,4,13,14),
(15,'Rust',2010,14,16,26),
(16,'Scala',2004,11,17,34);

查看刚插入的数据

select * from programming_languages;

5、demo参考来源

https://github.com/geshan/programming-langugages-api

但修改了一些代码,本demo源码见末尾

6、启动项目

先npm i

通过npx 来使用nodemon,也会下载nodemon到内存,但不会安装到node_modules,可以免去额外引入包的麻烦

npx nodemon@latest index.js

7、请求api

  • 可以用VScode的REST插件

route.rest文件

###
GET http://localhost:3000/programming-languages/?page=1

###
POST http://localhost:3000/programming-languages
Content-Type: application/json

   "name":"dart", 
    "released_year": 2011, 
    "githut_rank": 13, 
    "pypl_rank": 20, 
    "tiobe_rank": 25


###
PUT http://localhost:3000/programming-languages/17
Content-Type: application/json

   "name":"Matlab", 
    "released_year": 1970, 
    "githut_rank": 100, 
    "pypl_rank": 100, 
    "tiobe_rank": 100


### 
DELETE http://localhost:3000/programming-languages/1
  • 也可以用curl

-i表示输出时将http的响应头也加上
-X指定用POST/GET请求
-H表示请求头
–data则是body的数据

POST

curl -i -X POST -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/programming-languages --data '"name":"dart", "released_year": 2011, "githut_rank": 13, "pypl_rank": 20, "tiobe_rank": 25'

PUT

curl -i -X PUT -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/programming-languages/17 --data '"name":"dart", "released_year": 2011, "githut_rank": 12, "pypl_rank": 20, "tiobe_rank": 25'

DELETE

curl -i -X DELETE -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/programming-languages/17

GET

curl -i -X GET -H 'Accept: application/json' -H 'Content-type: application/json' http://localhost:3000/programming-languages/?page=1

但以上代码在powershell和cmd中运行会报不同程度的错,无法正常运行,但在git bash中是可以正常运行的

  • 还可以用图形界面,源码都在最后


可以看到edit delete 以及post的表单

8、源码

https://github.com/lujiazho/nodejs-demos/tree/main/REST-API-demo

以上是关于REST API基于Express.jsmysql2的简单demo的主要内容,如果未能解决你的问题,请参考以下文章

REST API 基于ACCESS TOKEN

创建与基于 REST 的 API 的 Microsoft Access 数据库连接

怎样更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现

托管基于 Java 的 REST API 服务

Rest API 基于令牌的身份验证。基本认证

将 ZIP 文件发送到基于 REST 的 API,该 API 使用基于 Flutter 的移动应用程序托管在 AWS 上的 SSL TLS (https)