在规范路由下,同一接口如何支持多种HTTP Method提交方式

首先,一个接口应当只做一件事情,HTTP Method是有意义的(例如RESTful接口风格设计),一个接口支持多种HTTP Method方式通常是接口设计不合理,建议重新审视接口设计。

通常是不存在一个API需要绑定多个HTTP Method的场景的。例如,拿用户接口来讲,一个CURD接口在RESTful实现应当有4-5API定义,实现不同的业务逻辑。那么可能存在以下API定义的RESTful接口:

接口名称    Method    Path
创建用户    PUT       /user
用户列表    GET       /user
用户详情    GET       /user/{uid}
修改用户    POST      /user/{uid}
删除用户    DELETE    /user/{uid}

如果确实存在一个接口支持多个HTTP Method的场景,那么可以通过在Meta标签中的method属性中使用英文,号分隔各个HTTP Method即可,例如:

type SaveReq struct {
	g.Meta `path:"/user/{uid}" method:"put,post" summary:"保存用户" tags:"用户管理"`
	Uid    int64  `dc:"用户ID"`
	Name   string `dc:"用户名"`
	// ...
}

使用默认提供的Response结构体,如何让Data字段只返回数组而无需指定名称的键值对

使用类型别名即可。

源码地址:gf/example/httpserver/response-with-json-array at master · gogf/gf (github.com)

结果示例: