01API语法与路由配置详解
go-zero API语法与路由配置详解
1. API定义文件规范
// api/user.api
syntax = "v1"
type LoginReq {
Username string `json:"username"`
Password string `json:"password"`
}
type Response {
Code int `json:"code"`
Data string `json:"data"`
}
service user {
@handler Login
post /api/v1/login (LoginReq) returns (Response)
}
2. 路由注册机制
# 使用goctl生成路由代码
goctl api go -api user.api -dir .
3. 参数校验语法
// 带验证的请求结构
type RegisterReq {
Username string `json:"username" validate:"required,min=6"`
Email string `json:"email" validate:"email"`
Password string `json:"password" validate:"required,contains=!@#"`
}
4. 与Gin框架对比
| 特性 | go-zero | Gin |
|---|---|---|
| 路由定义方式 | API描述文件声明式配置 | 代码内链式配置 |
| 参数校验 | 自动生成校验代码 | 手动编写校验逻辑 |
| 代码生成 | 内置goctl生成完整项目结构 | 需自行组织架构 |
| 性能表现 | 内置优化路由树 | 标准实现 |
5. 最佳实践
- 使用API文件统一管理接口规范
- 通过goctl自动生成路由、handler和校验代码
- 采用分层校验:基础校验在API文件,业务校验在logic层
- 合理使用路由分组(通过service定义实现)
01API语法与路由配置详解的更多相关文章
- 跟我学Spring Cloud(Finchley版)-17-Zuul路由配置详解
但在实际项目中,往往需要自己定义路由规则,Zuul的路由配置非常灵活.简单,本节详细讲解Zuul的路由配置. 一.自定义指定微服务的访问路径 配置zuul.routes.指定微服务的serviceId ...
- ASP.NET MVC路由配置详解
命名参数规范+匿名对象 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", ...
- 缓存varnish的管理及配置详解
一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ...
- Apache2 httpd.conf 配置详解
Apache2 httpd.conf 配置详解 <第一部分> 常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相 ...
- 使用Squid做代理服务器,Squid单网卡透明代理配置详解(转)
使用Squid做代理服务器 说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度.其实,在需要访问外部的局域网中,我们自己就能设置代理,把访问次数较 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- logback配置详解2<appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- Nginx配置文件(nginx.conf)配置详解(2)
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- Apache日志配置详解(rotatelogs LogFormat)
logs/error_logCustomLog logs/access_log common--默认为以上部分 修改为如下: ErrorLog "|/usr/sbin/rotatelogs ...
随机推荐
- 单服务器高性能模式:Reactor 与Proactor
极客时间:<从 0 开始学架构>:单服务器高性能模式:Reactor 与Proactor 1.引言 单服务器高性能的 PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发 ...
- 搭建邮局-3.安装邮局前端roundcube和测试
目录 搭建邮局-1.安装hMailserver和配置邮局 https://www.cnblogs.com/daen/p/16040202.html 搭建邮局-2.添加域名和域名解析 https://w ...
- 浅谈RMI、JRMP、JNDI
目录 RMI 概念: 为什么要有RMI? RMI的构成: 如何使用RMI 注意!!! JRMP(是RMI的通信协议的名字) 概念 查看通信过程 工具使用 攻击Server 攻击Client JNDI ...
- pytorch入门 - LetNet5 神经网络
1.LetNet5简介 LeNet5是由Yann LeCun等人在1998年提出的一种卷积神经网络架构,主要用于手写数字识别.它是早期卷积神经网络的成功应用之一,为现代深度学习模型奠定了基础.LeNe ...
- java代码运行出现DENIED Redis is running in protected mode because protected mode is enabled 问题解决
这个错误是因为开启了保护模式,导致出错.所以需要关闭redis的保护模式. 编辑redis的redis.config 注释 bind 127.0.0.1 .修改protected-mode 为 no ...
- vue导出Excel表格各种样式
https://www.cnblogs.com/Awchao/p/14143385.html
- C# 文件正由另一进程使用,该进程无法访问该文件
OpenFileDialog控件,而使用该控件时若没有将条件设置好,很容易出现以下提示: 打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示, ...
- [Compose Multiplatform Desktop] 比官方更好的Compose预览
前提概要 Compose Multiplatform 是从 Android 的 Jetpack Compose 发展而来的. 所以 Compose 在 Android 上功能最完善,其次是 Deskt ...
- vite vue/react使用pont-engine
pont-engine 是一款阿里的api生成工具! 安装依赖即可 yarn add --dev pont-engine 然后即可使用 pont start 生成之后,在入口文件导入生成的index即 ...
- CF1989C Two Movies 题解
CF1989C Two Movies 贪心.如果某人对两部电影评分不一样,显然取评分高的那一个.如果是 \(1\) 和 \(0\) 或 \(1\) 和 \(-1\),那么显然取 \(1\).如果是 \ ...