首页 > 其他分享 >[Rust]使用Rocket框架搭建简单Web服务

[Rust]使用Rocket框架搭建简单Web服务

时间:2024-08-04 19:06:57浏览次数:6  
标签:Web use Rocket rocket get fn main id Rust

本文主要讲述如何在Rust中使用Rocket搭建简易Web服务

1.添加Rocket库

Cargo.toml

[dependencies]
rocket = { version = "0.5.1", features = ["secrets"] }

2.创建服务

2.1 创建一个启动脚本

main.rs

use rocket::{launch,routes};

 #[launch]
 fn rocket() -> _ {
     rocket::build().mount("/", routes![]) //这里先将网站挂载到根目录
}

2.2 创建服务

2.2.1 创建一个Get方式
  • 简单的get响应
    main.rs
use rocket::get;

#[get("/hello_world")]
async fn hello_world() -> String {
    "Hello World".to_string()
}
  • 从get(浏览器输入的路径)获取参数
    main.rs
#[get("/hello/<id>")]
async fn get_id(id:String) -> String{
    id
}
  • 输入文件名并读取HTML格式文件并返回
    main.rs
use std::fs;
use std::path::Path;
use rocket::http::ContentType;

#[get("/html/<id>")]
async fn code(id:String) -> Option<(ContentType,String)>{
    let path = Path::new(&id);
    if let Ok(s) = fs::read_to_string(path){
        Some((ContentType::HTML,s))
    } else {
        None
    }
}
2.2.2 创建一个静态文件服务
use std::path::PathBuf;
use rocket::fs::NamedFile;

#[get("/<file..>")] 
async fn html(file: PathBuf) -> Option<NamedFile> {
    NamedFile::open(Path::new("./").join(file)).await.ok()
	//如果将文件放在了xxx文件夹,就将Path::new("./")改为Path::new("./xxx/")
}
2.3 挂载服务
  • 让我们回到 2.1 时创建的启动脚本,将上面的几个服务挂载上去
    main.rs
 #[launch]
 fn rocket() -> _ {
     rocket::build().mount("/", routes![hello_world,get_id,code,html])
}

此时输入 cargo run 就会发现服务已经运行在 127.0.0.1:8000

3 配置文件

  • 在网站目录下(跟Cargo.toml同级的目录)创建一个名为 Rocket.toml 的文件
[global]
port = 80
address = "127.0.0.1"
secret_key = "MTE0NTE0MTkxOTgxMDExNDUxNDE5MTk4MTAxMTQ1MTQxMTQ1MTQxOTE5ODEwMTE0NTE0MTkxOTgxMDExNDUxNA=="
//secret_key请输入随机base64加密的256-bit密钥
//可以使用命令 openssl rand -base64 32 生成
//或者随机输入64个字母或者数字进行base64加密

大功告成,此时一个基本的web服务就搭建好了

标签:Web,use,Rocket,rocket,get,fn,main,id,Rust
From: https://www.cnblogs.com/MisakaE/p/18341390

相关文章

  • WebGL拖动控制点绘制贝塞尔曲线——以三次贝塞尔曲线为例
    为了实现该功能,这里将功能分成两部分。第一部分是控制点的拖动功能,第二部分是贝塞尔曲线的绘制功能。控制点的拖动功能:鼠标按下选择点->鼠标移动修改点->鼠标松开释放点。选择点通过发生mousedown事件后遍历控制点数组,判断点击的位置是否和某个点的距离小于一定值,选择第一个满......
  • 当尝试执行Web应用程序时,会发生这样的错误
    ValueError:pickle中的节点数组具有不兼容的dtype:预期:{'names':['left_child','right_child','feature','threshold','impurity','n_node_samples','weighted_n_node_samples','......
  • webgl 相对 opengl有什么优缺点
    WebGL和OpenGL是两种常用的图形渲染API,但它们有一些显著的不同和各自的优缺点。此外,还有其他一些图形API也可以用于不同的应用场景。下面详细介绍WebGL与OpenGL的对比,并列举一些其他选择。WebGLvs.OpenGLWebGL的优点跨平台支持:WebGL运行在浏览器中,无需安装额......
  • 小迪安全-Web攻防-文件上传-JS验证&mime&user.ini&语言特性
    一、知识点1、文件上传-前端验证2、文件上传-黑白名单3、文件上传-user.ini妙用4、文件上传-PHP语言特性二、详细点1、检测层面:前端,后端前置:后门代码需要用特定格式后缀解析,不能以图片后缀解析解析脚本后门代码(解析漏洞除外)如:JPG图片里面有PHP后门代码,不能被触发,所以连......
  • JavaWeb中Servlet过滤器的应用即防跳墙的添加
    原理:在Servlet和mybatis的基础环境上使用过滤器(对上篇学生管理系统的进一步完善)也是使用session进行判断和控制页面的跳转一、过滤器的基本概念: Servlet过滤器:  从字面上的字意理解为经过一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求......
  • JavaWeb之servlet关于Ajax实现前后端分离
    一、什么是Ajax:AJAX=AsynchronousJavaScriptandXML(异步的JavaScript和XML)。AJAX不是新的编程语言,而是一种使用现有标准的新方法。AJAX最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。AJAX不需要任何浏览器插件,但需要用户允......
  • webpack 打包实战解析
    Webpack打包实战本文从一个简单的例子出发,比较一下,我们的代码经过webpack打包后会变成啥样,带有HMR的情况下,会有什么不同我们的代码//index.jsimport{greeting}from'./moduleA'letcleanup=null;functionrender(){constnode=document.getElementById('mount'......
  • 基于web的高校校园跳蚤市场管理系统的设计与实现/校园二手交易平台/课设/含源码
    需要源码的联系方式请看文末基于web的高校校园跳蚤市场管理系统的设计与实现摘要随着互联网技术在不断地发展,网络成为了人们生活的一部分,而高校校园跳蚤市场管理系统作为网上应用的一个全新的体现,越来越多的学生开始在校园内寻找二手物品,以降低生活成本。因此,高校校园跳蚤......
  • 基于Java的人力资源管理/企业人事管理/Web、ssm、Vue
    需要源码的联系方式请看文末摘要 人才作为企业的核心资源,如果得到有效合理的管理,就能在竞争中脱颖而出。在此基础上,开发了一个人力资源管理系统,以满足企业人力资源管理体系的需求。该系统前后端分别采用Vue和SSM框架进行开发,这是目前非常流行的技术,可以快速开发高质量的应......
  • Python 请求 POST 请求与 websockets 库一起使用时挂起
    我使用Python中的requests库发送POST请求,同时维护与websockets库的WebSocket连接:importasyncioimportrequestsimportwebsocketsasyncdefwebsocket_handler(uri):asyncwithwebsockets.connect(uri)aswebsocket:whileTrue:me......