Closed bootun closed 1 month ago
我在proto中定义了一个请求参数,是个复合类型,定义如下:
message GetTwoPointsDistanceRequest { message Point { // 纬度 string latitude = 1[(tagger.tags) = "form:\"latitude\""]; // 经度 string longitude = 2[(tagger.tags) = "form:\"longitude\""]; } // 点位1 Point point1 = 1[(tagger.tags) = "form:\"point1\""]; // 点位2 Point point2 = 2[(tagger.tags) = "form:\"point2\""]; }
执行make proto后,生成的swagger-ui上显示字段名是
make proto
?point1.latitude=xx&point1.longitude=xx&point2.latitude=xx&point2.longitude=xx
但不清楚这样的格式如何写proto才能解析?
如果想要框架生成的代码原生能拿到参数的话,是不是只能把参数平铺到结构最外层? 变成这样:
message GetTwoPointsDistanceRequest { // 点位1的纬度 string point1_latitude = 1[(tagger.tags) = "form:\"point1_latitude\""]; // 单位1的经度 // ... // 点位2的纬度 // ... // 点位2的经度 // ... }
或者要把gin的ctx透传过来,直接用gin的c.Query去拿? 不管是平铺参数还是透传gin的context,都感觉不够优雅,究竟哪种方法才算是最佳实践呢?
c.Query
对于复合类型参数,应该用POST请求,如果坚持使用GET请求,把复合类型参数改为平铺更加省事。
我在proto中定义了一个请求参数,是个复合类型,定义如下:
执行
make proto
后,生成的swagger-ui上显示字段名是但不清楚这样的格式如何写proto才能解析?
如果想要框架生成的代码原生能拿到参数的话,是不是只能把参数平铺到结构最外层? 变成这样:
或者要把gin的ctx透传过来,直接用gin的
c.Query
去拿? 不管是平铺参数还是透传gin的context,都感觉不够优雅,究竟哪种方法才算是最佳实践呢?