- Rwf é um framework abrangente para criar aplicações web em Rust
- Foi escrito usando o padrão clássico MVC (model-view-controller) e já oferece por padrão tudo o que é necessário para criar apps web rápidos e seguros com facilidade
Visão geral dos recursos
- Servidor HTTP
- ORM amigável para escrever consultas PostgreSQL com facilidade
- Templates dinâmicos
- Autenticação e sessões de usuário integradas
- Middleware
- Tarefas em segundo plano e tarefas agendadas
- Migrações de banco de dados
- Framework REST integrado com suporte a serialização JSON
- Suporte a WebSockets
- Hospedagem de arquivos estáticos
- Integração estreita com Hotwired Turbo para criar SPAs conduzidas pelo backend
- Configuração por ambiente
- Logging e métricas
- CLI
- Servidor WSGI para migrar de apps Django/Flask
Início rápido
- Para adicionar o Rwf à stack, crie uma aplicação binária em Rust e adicione
rwf e tokio às dependências:
cargo add rwf
cargo add tokio@1 --features full
- Criar o app é tão simples quanto isto:
use rwf::prelude::*;
use rwf::http::Server;
#[derive(Default)]
struct IndexController;
#[async_trait]
impl Controller for IndexController {
async fn handle(&self, request: &Request) -> Result {
Ok(Response::new().html("Hey Rwf!"))
}
}
#[tokio::main]
async fn main() {
Server::new(vec![
route!("/" => IndexController),
])
.launch("0.0.0.0:8000")
.await
.unwrap();
}
Status
- O Rwf está em estágio inicial de desenvolvimento e ainda não está pronto para produção. Muitos recursos e a documentação ainda estão incompletos.
Resumo do GN⁺
- Rwf é um framework robusto para criar aplicações web em Rust e oferece vários recursos para desenvolver apps web rápidos e seguros com facilidade usando o padrão MVC.
- Como ainda está em estágio inicial de desenvolvimento, pode ser difícil usá-lo em ambientes de produção, mas vários recursos e a documentação devem continuar sendo atualizados.
- Pode ser útil para desenvolvedores que querem criar aplicações web com Rust e também para quem está considerando migrar de frameworks existentes como Django ou Flask.
- Outros frameworks web em Rust com recursos semelhantes incluem Actix e Rocket.
1 comentários
Comentários no Hacker News
Enfatiza que usar a biblioteca padrão da linguagem Go reduz a dependência de frameworks web complexos, aumenta a segurança e facilita a manutenção
A partir da experiência com frameworks web MVC, tirou a lição de que a lógica de negócio não deve ficar na camada de modelo
Espera que frameworks REST sejam capazes de gerar definições Swagger automaticamente
Avalia que escolher o nome de um novo framework é uma boa forma de aparecer no topo dos resultados de busca
Demonstra interesse em migrar de Python para Rust
Alerta que incluir um ORM como recurso nativo de um framework web pode parecer razoável no início, mas, com o tempo, ele pode acabar virando um projeto independente ou surgir a vontade de usar outro ORM
Menciona que são necessários mais frameworks com opiniões fortes, como Rails e Django
Expressa expectativa pelo lançamento de um framework que preencha uma lacuna importante no ecossistema Rust
Diz que percebeu o valor do MVC por meio da experiência de desenvolvimento com Django e que vai dar uma olhada no novo framework
Após avaliar vários frameworks para trabalho de backend em Rust, conclui que o Axum é o mais adequado