mirror of
https://github.com/rwf2/Rocket.git
synced 2025-01-05 17:22:36 +00:00
8d3f1d65ac
The guide is now in docs/guide. All other site assets are being migrated to a separate repository. The guide markup has been upgraded to take advantages of improvements in the static site generator used to build the Rocket website.
59 lines
2.5 KiB
Markdown
59 lines
2.5 KiB
Markdown
+++
|
|
summary = "introduces Rocket and its philosophy"
|
|
+++
|
|
|
|
# Introduction
|
|
|
|
Rocket is a web framework for Rust. If you'd like, you can think of Rocket as
|
|
being a more flexible, friendly medley of [Rails](https://rubyonrails.org/),
|
|
[Flask](https://palletsprojects.com/p/flask/),
|
|
[Bottle](https://bottlepy.org/docs/dev/index.html), and
|
|
[Yesod](https://www.yesodweb.com/). We prefer to think of Rocket as something
|
|
new. Rocket aims to be fast, easy, and flexible while offering guaranteed safety
|
|
and security where it can. Importantly, Rocket also aims to be _fun_, and it
|
|
accomplishes this by ensuring that you write as little code as needed to
|
|
accomplish your task.
|
|
|
|
This guide introduces you to the core, intermediate, and advanced concepts of
|
|
Rocket. After reading this guide, you should find yourself being very
|
|
productive with Rocket.
|
|
|
|
## Audience
|
|
|
|
Readers are assumed to have a good grasp of the Rust programming language.
|
|
Readers new to Rust are encouraged to read the [Rust
|
|
Book](https://doc.rust-lang.org/book/). This guide also assumes a basic
|
|
understanding of web application fundamentals, such as routing and HTTP. Mozilla
|
|
provides a good overview of these concepts in their [MDN web docs].
|
|
|
|
[MDN web docs]: https://developer.mozilla.org/en-US/docs/Web/HTTP
|
|
|
|
## Foreword
|
|
|
|
Rocket's design is centered around three core philosophies:
|
|
|
|
* **Security, correctness, and developer experience are paramount.**
|
|
|
|
The path of least resistance should lead you to the most secure, correct web
|
|
application, though security and correctness should not come at the cost of
|
|
a degraded developer experience. Rocket is easy to use while taking great
|
|
measures to ensure that your application is secure and correct without
|
|
cognitive overhead.
|
|
|
|
* **All request handling information should be typed and self-contained.**
|
|
|
|
Because the web and HTTP are themselves untyped (or _stringly_ typed, as
|
|
some call it), this means that something or someone has to convert strings
|
|
to native types. Rocket does this for you with zero programming overhead.
|
|
What's more, Rocket's request handling is **self-contained** with zero
|
|
global state: handlers are regular functions with regular arguments.
|
|
|
|
* **Decisions should not be forced.**
|
|
|
|
Templates, serialization, sessions, and just about everything else are all
|
|
pluggable, optional components. While Rocket has official support and
|
|
libraries for each of these, they are completely optional and swappable.
|
|
|
|
These three ideas dictate Rocket's interface, and you will find all of them
|
|
embedded in Rocket's core features.
|