Códigos de estado y encabezados en Rust
Una respuesta de tupla fija estado, encabezados y cuerpo en un solo return.
use axum::http::{header, HeaderMap, StatusCode};
use axum::response::IntoResponse;
use axum::{routing::get, Router};
async fn created() -> impl IntoResponse {
let mut headers = HeaderMap::new();
headers.insert(header::LOCATION, "/api/results/42".parse().unwrap());
(StatusCode::CREATED, headers, "saved")
}
async fn teapot() -> impl IntoResponse {
(StatusCode::IM_A_TEAPOT, "no coffee here")
}
#[tokio::main]
async fn main() {
let app = Router::new()
.route("/created", get(created))
.route("/teapot", get(teapot));
let listener = tokio::net::TcpListener::bind("127.0.0.1:8080")
.await
.unwrap();
axum::serve(listener, app).await.unwrap();
}
Cómo funciona
(StatusCode, T)reemplaza el 200 por defecto.- Agregar un
HeaderMapfija encabezados de respuesta. impl IntoResponsedeja que un handler devuelva varias formas.
Palabras clave y builtins usados aquí
asyncawaitfnletmutuse
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 644
- Tokens
- 184
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 100 segundos.
Paso 1 de 3 en Respuestas y middleware; paso 6 de 9 en Servicios web con axum.