بنقرة واحدة
axum-guide
Axum v0.8.x backend development guide. Handlers, routing, middleware, auth, error handling.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Axum v0.8.x backend development guide. Handlers, routing, middleware, auth, error handling.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Claude + Gemini + Codex 4者クロスファクトチェック。Opus自身、Gemini Flash、Gemini Pro、Codex (gpt-5.3-codex) の4者で独立チェック→争点抽出→議論→合意レポートを出力する。
Claude + Gemini クロスファクトチェック。Opus自身、Gemini Flash、Gemini Proの3者で独立チェック→争点抽出→議論→合意レポートを出力する。
Claude内マルチモデルファクトチェック。Opusが自身でチェックし、Sonnetサブエージェントに独立チェックさせ、両者の結果を比較・議論して合意レポートを出力する。
Gemini CLIのGoogle検索統合(grounding)を使ったWeb検索。Claudeは結果の整形・要約のみ担当し、WebSearchツールは使用しない。
Dioxus v0.7.x desktop app guide. Components, Signal state, rsx! macro, hooks, events, Context API, async.
Leptos v0.8.x frontend development guide. Components, signals, resources, async, forms, and ownership patterns.
| name | axum-guide |
| description | Axum v0.8.x backend development guide. Handlers, routing, middleware, auth, error handling. |
use axum::{extract::{Path, Query, State, Json}, response::IntoResponse, http::StatusCode};
async fn get_user(
State(pool): State<PgPool>,
Path(id): Path<i32>,
) -> Result<Json<User>, AppError> {
let user = sqlx::query_as!(User, "SELECT * FROM users WHERE id = $1", id)
.fetch_one(&pool).await?;
Ok(Json(user))
}
async fn create_user(
State(pool): State<PgPool>,
claims: Claims, // Custom extractor
Json(payload): Json<CreateUserRequest>,
) -> Result<(StatusCode, Json<User>), AppError> {
// ...
Ok((StatusCode::CREATED, Json(user)))
}
fn app() -> Router<AppState> {
Router::new()
.route("/", get(root))
.route("/users", get(list_users).post(create_user))
.route("/users/:id", get(get_user).put(update_user).delete(delete_user))
.nest("/api", api_routes())
.layer(middleware_stack())
.with_state(state)
}
pub struct AppError {
pub code: StatusCode,
pub message: String,
}
impl IntoResponse for AppError {
fn into_response(self) -> Response {
(self.code, Json(json!({"error": self.message}))).into_response()
}
}
impl From<sqlx::Error> for AppError {
fn from(err: sqlx::Error) -> Self {
match err {
sqlx::Error::RowNotFound => AppError {
code: StatusCode::NOT_FOUND,
message: "Resource not found".into(),
},
_ => AppError {
code: StatusCode::INTERNAL_SERVER_ERROR,
message: "Database error".into(),
},
}
}
}
async fn logging_middleware(req: Request, next: Next) -> Response {
let method = req.method().clone();
let uri = req.uri().clone();
let response = next.run(req).await;
tracing::info!("{} {} -> {}", method, uri, response.status());
response
}
let app = Router::new()
.route("/", get(handler))
.layer(middleware::from_fn(logging_middleware));
pub struct Claims { pub user_id: i32, pub role: String }
#[async_trait]
impl<S: Send + Sync> FromRequestParts<S> for Claims {
type Rejection = AppError;
async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result<Self, Self::Rejection> {
let token = parts.headers.get("cookie")
.and_then(|v| v.to_str().ok())
.and_then(extract_token)
.ok_or(AppError::unauthorized("No token"))?;
validate_jwt(&token)
}
}
async fn auth_middleware(claims: Claims, req: Request, next: Next) -> Response {
next.run(req).await
}
let protected = Router::new()
.route("/profile", get(profile))
.layer(middleware::from_fn(auth_middleware));
use tower_http::cors::{CorsLayer, Any};
let cors = CorsLayer::new()
.allow_origin(Any)
.allow_methods(Any)
.allow_headers(Any)
.allow_credentials(true);
async fn login() -> impl IntoResponse {
let cookie = format!(
"token={}; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age={}",
token, max_age
);
([(header::SET_COOKIE, cookie)], Json(response))
}
async fn upload(mut multipart: Multipart) -> Result<(), AppError> {
while let Some(field) = multipart.next_field().await? {
let name = field.name().unwrap_or_default().to_string();
let data = field.bytes().await?;
// Process file
}
Ok(())
}
State last (others may consume body)Clone (usually wrap in Arc)