axum错误处理

本章主要讨论 axum 的错误处理。

本章将简化官方的 extractor 以及结合 nginx 来实现。

自定义 extractor

在 handler 中使用

// src/handler.rs
use crate::extract::Json;
use serde::Deserialize;

#[derive(Deserialize, Debug)]
pub struct User {
    pub username: String,
    pub email: String,
}
// 使用的是我们自定义的Json
pub async fn login(Json(user): Json<User>) {
    dbg!(&user);
}

nginx

我们可以使用 nginx 来反代 axum 应用,并根据不同的 HTTP 响应码来定义不同的 JSON 响应:

server {
    listen 443 ssl;
    server_name axum.rs;

    error_page 400 401 403 404 405 500 501 502 503 504 /msg.json;
    location /msg.json {
        internal;
        default_type application/json;
        charset utf-8;
        return 400 '{"error":"请检查你提交的数据"}';
    }
}

本章代码可以在代码库找到。

要查看完整内容,请先登录