DTO 参数校验与错误处理
DTO 参数校验与错误处理
在 c8rv-master 架构中,推荐将数据传输对象(DTO)与业务逻辑解耦,并在进入 Service 之前完成严谨的结构校验。
1. DTO 定义与标签
package dto
type ExecuteCommandReq struct {
Command string `json:"command" validate:"required,min=1"`
Args []string `json:"args"`
Timeout int `json:"timeout" validate:"gte=0,lte=300"`
}
type ExecuteCommandResp struct {
ExitCode int `json:"exit_code"`
Stdout string `json:"stdout"`
Stderr string `json:"stderr"`
}2. 统一错误码与异常响应
package adapter
type AppError struct {
Code int `json:"code"`
Message string `json:"message"`
}
func (e *AppError) Error() string {
return e.Message
}
var (
ErrInvalidParams = &AppError{Code: 40001, Message: "参数校验失败"}
ErrPermission = &AppError{Code: 40003, Message: "无权限执行此操作"}
ErrInternal = &AppError{Code: 50000, Message: "系统内部错误"}
)