Barra Final

Um middleware para adicionar ou remover automaticamente a barra final /.

Casos de Uso

O middleware Barra Final é particularmente útil nos seguintes cenários:

  • Normalização de URL: Garante que todas as URLs sigam um formato consistente (adicionando ou removendo uniformemente barras finais), o que ajuda a melhorar o SEO e evitar problemas de conteúdo duplicado.

  • Tratamento Simplificado de Rotas: Elimina a necessidade de escrever lógicas de roteamento separadas para URLs com e sem barras finais, pois o middleware lida automaticamente com essa conversão.

  • Compatibilidade: Alguns clientes podem adicionar ou remover automaticamente barras finais das URLs. Este middleware garante que as solicitações sejam roteadas corretamente.

  • Gerenciamento de Redirecionamento: Pode ser configurado para redirecionar automaticamente URLs com barras finais para aquelas sem (ou vice-versa), melhorando a experiência do usuário.

  • Evitar Conflitos de Rotas: Em muitos frameworks web, /caminho e /caminho/ podem ser tratados como rotas diferentes. Este middleware pode lidar com elas uniformemente.

Código de Exemplo

main.rs
Cargo.toml
use salvo::prelude::*;
use salvo::trailing_slash::add_slash;

#[handler]
async fn hello() -> &'static str {
    "Hello"
}

#[tokio::main]
async fn main() {
    tracing_subscriber::fmt().init();
    let router = Router::with_hoop(add_slash())
        .push(Router::with_path("hello").get(hello))
        .push(Router::with_path("hello.world").get(hello));
    let acceptor = TcpListener::new("0.0.0.0:8698").bind().await;
    Server::new(acceptor).serve(router).await;
}