今天要讲的是 Rocket
那我先简述一下什麽是 Rocket
Rocket 是一个致力於实现 快速、简单、弹性且安全 的 Web 框架
然後 最近有推出一个新的框架叫做 poem
他设计者的理念是要做出最简单使用的 Rust Web 框架
有兴趣可以研究看看 但是目前文献较少
抱歉离题了
这几天的主题是 Rocket 那麽
该如何使用呢
请先将 Rust 版本设为 nightly
指令为
$ rustup override set nightly
也可以
$ rustup default nightly
差别只在上面是更改专案的
下面则是整体环境 也就是整个系统
这次使用的版本为 0.5.0-rc.1
跟直接 cargo add rocket 出来的版本不一样
请注意一下
#[macro_use] extern crate rocket;
#[get("/")]
fn hello() -> &'static str {
"Hello, world!"
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello])
}
最基础的代码应该要长这样
跑起来预设应该是 127.0.0.1:8080
会输出 Hello, world!
那麽 mount 其实不只能用一个参数
也可以塞两个在里面
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello, hi])
}
以此类推
但是要注意的是 不能够有两个同样路径的传入
然後如果说要直接取 uri 的值的话
像是
#[get("/<name>")]
fn hello(name: String) -> String {
format!("Hello, {}!", name.as_str())
}
这样就能够取到 / 後的值
至於 format 我之前没讲过 总之就是能够接合 String 的一个东西
然後 如果说 出现这种情况
#[get("/<num>")]
fn hello(num: i32) -> String {
format!("Your number = {}!", num)
}
然後使用者输入其他形式就会跑到 404
如果你希望使用者能得到其他讯息就可以多加这个
#[get("/<num>", rank = 2)]
fn hello2(num: String) -> String {
format!("Error type")
}
当然 这只是举例
用法有很多种
rank 在 Rocket 中就是一个阶层
如果说今天发现现在的格式符合现在的条件 就会跳到下一个 rank 或是跑到 404 这主要可以用在登入系统的部份
讲到 404
应该大部分人的 404 都是这个样子
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello]).register("/", catchers![not_found])
}
如果这样写就能使用自己定义的 404 page 了
这边官方文本还是旧的
然後大部分人应该都不会直接在 .rs 档里面直接用 html 语法吧
这边讲一下如何引入 html 档在路
use rocket::fs::{relative, FileServer};
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", FileServer::from(relative!("static")))
}
这样写的话 就能够将 static 资料夹中的档案都引入进去
今天讲的稍微有点乱了
但是主轴还是 Rocket 框架的基础
明天讲一下怎麽接收 post 跟 使用 json 格式
大家好,今天要介绍 Laravel 其中一个功能'加密',我会将这个加密加入我的专案实作之中。lar...
各位邦友好,敝人想问一下leetcode https://leetcode.com/problems...
OS模组(Python内建) 说明 : os模组是一种与作业系统相关的模组,提供数十种与作业系统沟通...
接下来我会看看相关网页是如何设计的,这里参考了约 10 个国家的气象局官网,但囿於内容篇幅,仅简单列...
本系列文之後也会置於个人网站 在帐号系统下,除了帐号本身与帐号群组外,通常还存在一个非常重要的部分...