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 ...
随机推荐
- 自实现模态对话框-DoModal函数
参考CDialog::DoModal函数的实现方式,自己实现了模态框相关功能. ModalBase.h头文件 1 #include <afxwin.h> 2 3 #define ID_NU ...
- 把iview的table做成更适合展现大量数据的样式(字体变小、去除多余的padding等)
<style> .ivu-table { font-size: 12px !important; } .ivu-table-header thead tr th { padding: 0p ...
- 哨兵线性搜索算法浅析与Python,C#实践Demo
如题: 在数组A[]中搜索给定值foundNum,其中length是A[]的长度 常规线性搜索 1.令索引i初始值为0,按次序依次赋值到n-1; (a)如果A[i]==foundNum,返回当前i; ...
- 解密prompt系列54.Context Cache代码示例和原理分析
Context Cache的使用几乎已经是行业共识,目标是优化大模型首Token的推理延时,在多轮对话,超长System Prompt,超长结构化JSON和Few-shot等应用场景,是不可或缺的.这 ...
- 面试题:String,StringBuilder,StringBuffer三者的区别
摘要:总结Java中的String,StringBuilder,StringBuffer三者的区别和联系,介绍后两者的扩容机制. Java中的String,StringBuilder,String ...
- 【2020.11.30提高组模拟】删边(delete) 题解
[2020.11.30提高组模拟]删边(delete) 题解 题意简述 给一棵树删边,每次删的代价为这条边所连的两个点的子树中最大点权值. 求删光的最小代价. \(n\le100000\). Solu ...
- python学习思维导图分享
python 本文包含了我的一些python学习的笔记和思维导图 第一部分:python基础 导图下载链接 第二部分:函数及其他文件操作 导图下载链接 第三部分:类及网络编程 导图下载链接 第四部分: ...
- git基础及gitee配置
安装git 网址:https://git-scm.com/book/zh/v2/起步-安装-Git 使用git 基本指令 # 初始化指令 git init # 管理目录下的文件状态 注:新增文件和修改 ...
- Hoic对网站的测试使用
禁止使用该项技术攻击一切未经允许的公网网站,违者将受到法律制裁. 下载地址:https://wwl.lanzout.com/iiJa11zsqljg 下载完成后解压,并打开. 打开 \(hoic2.1 ...
- linux服务器常用硬件查询操作
查看服务器内存条数 [root@test ~]# dmidecode |grep -P -A5 "Memory\s+Device" |grep Size |grep -v Rang ...