Rust - Rocket框架 -基础入门

Roket官网
官方是english文档,看的很累~

新建项目

cargo new 项目名 --bin

Cargo.toml

[dependencies]
rocket = "0.5.0-rc.1"

Hello,world! src/main.rs

#[macro_use] extern crate rocket;

#[get("/")] // 路由属性 
fn index() -> &'static str {
   //请求处理程序 
    "Hello, world!"
}

#[launch]
fn rocket() -> _ {
   
    rocket::build().mount("/", routes![index])//挂载
}

强烈建议使用VSCode + rust-analyzer(插件) + Better TOML(插件)

IDEARust插件并不友好,瞎报错,你没错也报错,而且并不支持Rocket框架的提示

开端

响应类型

响应类型必须实现 Responder(可派生)

#[get("/")]
fn index() -> T {
    /* ... */ }//T 需要实现Responder

&str,String,&[u8],Vec<u8>,File,(),Option<T>,Result<T,E> 都实现了 Responder

请求方法

在这里插入图片描述

//例如
#[get("/")] //是不是和java的Spring框架的注解很像,其实它更加方便好用,让我们来慢慢了解它

动态路径

需要实现 FromParam,&str,String,bool,i32,…基本类型都实现了它
程序1

use std::path::PathBuf;
use rocket::{
   request::FromRequest};
use rocket::http::{
   SameSite,CookieJar,Cookie};
use rocket::Request;

#[macro_use] extern crate rocket;

#[get("/b/<a>" , rank = 3) ]
fn get_f1(a:&str) {
   
	println!("str:{}",a);	
}

#[get("/b/<a>", rank = 0 )]
fn get_f2(a:i32) {
   
	println!("i32:{}",a);	
}

#[launch]
fn rocket() -> _ {
   
    rocket::build()
		.mount("/cs", routes![get_f1,get_f2])
}

rank属性越小越优先匹配
如果匹配失败,则去匹配下一个,官方把这种行为称呼为转发
如果相同路径下,省略了rank就会终止程序,相同的rank也会终止程序

需要注意的一点:&str不会拒绝任何匹配,比如:i32会拒绝非数字字符串匹配,由于&str本身就是字符串,所以它不会拒绝任何匹配.那么&str的优先级应该小一点,给其他函数一个机会

// 请求 => 输出
http://127.0.0.1:8000/cs/b/0  =>  i32:0
http://127.0.0.1:8000/cs/b/abc  =>  str:abc

我理解的不是很明白,就不来误导大家了,请看官方文档默认rank

匹配多个段

官方称呼为段守卫
段守卫的类型必须实现 FromSegments

接着上面的程序1,加入以下代码

#[get("/b/<a..>" , rank = 1)]
fn get_f3(a:PathBuf){
   
	for b in a.iter() {
   
		print!("{}/",b.to_str().unwrap());
	}
}
//修改为:
#[launch]
fn rocket() -> _ {
   
    rocket::build()
		.mount("/cs", routes![get_f1,get_f2,get_f3])<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾仪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值