首页 > 数据库 >actix-web连接mysql并返回json

actix-web连接mysql并返回json

时间:2024-10-22 11:23:45浏览次数:1  
标签:web actix json num let mysql test

toml

[dependencies]
actix-web = "4"
mysql = "25.0.0" 
chrono = "0.4"
serde = { version = "1.0", features = ["derive"] }

rs

use actix_web::{get,post, web, App, HttpServer, Responder, HttpResponse, Error};
use mysql::*;
use mysql::prelude::*;
use serde::{Serialize,Deserialize};

#[derive(Debug, Serialize)]
struct User {
    id: u64,
    test: String,
    num: u64,
}

#[derive(Deserialize,Serialize)]
struct Info {
    test: String,
    num: u64
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    let url = "mysql://root:root@localhost:3306/fiber";
    let pool = Pool::new(url).unwrap();
    HttpServer::new(move || {
        App::new()
            .app_data(web::Data::new(pool.clone())) // 将连接池克隆并存储在应用状态中
            //.route("/info",web::post().to(infos))
            .service(infos)
            .service(hello)
            .service(index) // 使用 index 函数
    })
        .workers(8) // 设置工作线程数量
        .bind(("127.0.0.1", 8080))?
        .run()
        .await
}

#[post("/info")]
async fn infos(infoo: web::Json<Info>) ->impl Responder {
    let obj = Info {
        test: infoo.test.to_string(),
        num: infoo.num.clone()
    };
    web::Json(obj)
}

#[get("/")]
async fn hello() -> impl Responder {
    HttpResponse::Ok().body("Hello world!")
}

#[get("/getAll")]
async fn index(pool: web::Data<Pool>) -> Result<impl Responder, Error> {
    let mut conn = pool.get_conn().map_err(|e| {
        actix_web::error::ErrorInternalServerError(e)
    })?;

    // 执行查询并映射结果到 User 结构体
    let results = conn.query_map(
        "SELECT id, test, num FROM fiber_user",
        |(id, test, num)| User { id, test, num },
    ).map_err(|e| {
        actix_web::error::ErrorInternalServerError(e)
    })?;

    Ok(web::Json(results))
}

标签:web,actix,json,num,let,mysql,test
From: https://www.cnblogs.com/qcy-blog/p/18492214

相关文章

  • 77.优美的鲜花网店网页 ​Web前端网页制作 大学生期末大作业 html+css+js
    目录一、前言二、网页文件三、网页效果四、代码展示1.HTML2.CSS3.JS五、更多推荐一、前言本实例以鲜花为主题设计,应用html+css+js,包括DIV布局、图片轮翻效果、菜单导航、二级三级菜单、留言板、搜索等,供大家参考。本网页支持如Dreamweaver、HBuilder、Text、Vscode......
  • 2024Ciscn总决赛Web Writeup
    前言鸽了三个月的复现计划:)ezjs考点是express引擎解析的一个trick,在高版本的express已经修复,先贴源码constexpress=require('express');constejs=require('ejs')constsession=require('express-session');constbodyParse=require('body-parser');co......
  • ctfshow-web入门-信息搜集(14)
    1.根据提示:有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人2.我们直接在url后面添加/editor,在flash上传空间里面找到文件空间,爆出了一堆目录3.最终我们在var/www/html/nothinghere/fl000g.txt这个路径找的到了flag,我们在url后面添加nothinghere/fl000g.......
  • JavaWeb:实验二JSP表单开发及访问数据库
    实现注册与登录功能:1.创建一个数据库,在数据库建立用户表。2.制作一个注册表单,可以输入账户和密码并提交(在数据提交之前用JS对表单数据进行有效性验证),将表单提交的数据写入数据库。3.制作一个登录表单,输入账号和密码,通过数据库进行验证,如果账号、密码验证通过,则显示“登录成功”......
  • ctfshow-web入门-信息搜集(16)
    1.根据题目提示:考察PHP探针php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。url后缀名添加/tz.php版本是雅黑PHP探针,然后查看phpinfo搜索flag2.在url后面添加上/tz.php3.点击PHPIN......
  • JavaWeb:实验一JSP运行环境安装及配置
    **制作一个静态网站的基本页面index.html,要求如下:1.页面布局采用框架实现,页面布局及样式如图1所示。**2.在页面的A部分显示显示“登录”和“注册”链接。单击“登录”链接,在C部分显示登录页面,登录页面包含一个HTML表单,页面参考样式如图2所示;单击“注册”链接,在C部分显示注册页面......
  • PHP的json浮点精度难题
    前言之前开发的接口需要用到json加签,有一次对接JAVA时,签名怎么都过不了,仔细对比了字符串,发现是PHP进行json_encode时,会将浮点型所有无意义的0给去掉(echo和var_dump也会),而JAVA那边没有。遂在文档中写下:“json中请把无意义的0去掉”。#doge最近又遇到这个事情,需求直接要求:显示......
  • webpack入门一篇
    1、webpack生命周期Webpack构建过程是生命周期的概念,主要包括以下几个阶段:1.1:初始化从配置文件和shellarguments读取参数,初始化Compiler对象。根据配置文件中的entry,确定构建的入口文件。1.2:配置解析配置文件,合并shellarguments和plugin定义的默认配置,得到最终配置。......
  • 把对象转换为json,在postman传递请求
    publicstaticvoidmain(String[]args){PackSaveTimeReqpackSaveTimeReq=newPackSaveTimeReq();packSaveTimeReq.setType(ThirdPartyOperationTypeEnum.WORK_START);packSaveTimeReq.setOperationTime(LocalDateTime.now());p......
  • 【JS逆向百例】某赚网 WebSocket 套 Webpack 逆向分析
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作......