use kit::{
json_response, redirect, text_response,
AppError, FrameworkError, HttpResponse,
Request, Response, ResponseExt,
};
// List users
pub async fn index(_req: Request) -> Response {
json_response!({
"users": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]
})
}
// Show a specific user
pub async fn show(req: Request) -> Response {
let id = req.param("id")?;
// Simulate user lookup
if id == "999" {
return Err(HttpResponse::json(serde_json::json!({
"error": "User not found"
})).status(404));
}
json_response!({
"id": id,
"name": format!("User {}", id)
})
}
// Create a user
pub async fn store(_req: Request) -> Response {
// ... create user logic ...
// Return 201 Created
json_response!({"id": 1, "created": true})
.status(201)
}
// Delete and redirect
pub async fn destroy(_req: Request) -> Response {
// ... delete logic ...
redirect!("users.index").into()
}
// Custom error example
pub async fn process(_req: Request) -> Response {
let result = do_something()?;
if !result.is_valid() {
return Err(AppError::unprocessable("Invalid data").into());
}
json_response!({"success": true})
}