首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rocket-流行的网络开发框架

简介

Rocket是一个基于Rust编写的上层网络框架,是目前rust主流的网络框架之一,有8.8k的star。而它的http部分就是基于之前提到的hyper。按官方说法,具有如下三个特点:1安全无误、开发体验好 2自动解决请求处理的类型问题,且无需全局状态 3各种可插拔的可选组件。那让我们来一起看一看吧~

准备工作

需要在Cargo.toml中加入依赖

然后需要注意,Rocket需要使用nigthly编译。也可以使用以下指令在当前目录中默认使用nightly

Hello World

首先我们来写一个最简单的服务器,向请求返回hello world

那大家可能会好奇,为什么hello返回的是一个字符串,Rocket就能把它作为response返回呢?这是因为Rocket中返回类型需要实现Responder Trait。而一些标准库中的类型已经有了实现,比如String的实现如下

因此我们可以直接返回这些常用类型,而Rocket就能够自动帮我们把他们转化为response。我们也可以类似的定义自己的类型去实现Responder。

动态分发

如果需要路由中有动态部分,可以使用。比如我们现在升级下我们的hello服务器,使得路径中可以有一个动态的名字变量name

也支持路由后的query参数,按照如下格式

测试

Rocket本身提供了本地的客户端,可以方便对服务器进行测试。比如之前我们写过hello服务器升级版,就可以很容易的进行测试

中间件

Rocket中相当于中间件的,有Request Guard和Fairing。前者可以用来处理权限管理等逻辑,而后者主要用来加入全局的Hook。先来一个Guard的例子,这里是Rocket内置的Cookie。完整的代码点这里

注意,Request Guard的一般形式是

其中a,b,c这些不在参数列表的就是Request Guard了,需要实现FromRequest Trait。

而下面的例子则是一个Fairing,用来给GET和POST请求加上一个计数器(Fairing一共可以有on_attach, on_launch, on_request和on_response这四个Hook,on_attach是在被attach到Rocket实例的时候,on_launch是Rocket实例启动的时候,后面两个就是字面意思啦)

配置文件

一般会在运行的根目录下放置Rocket.toml,配置Rocket在development,staging和production环境中的参数,比如服务器地址端口,请求限制,worker线程数量等。下面是一个示例:

小结

其实Rocket还有很多可以讲的内容。限于篇幅就讲到这里啦。大家有兴趣的可以自己去阅读官方的例子和教程,并在实践中学习吧~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200124A0GU2I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券