[zeromicro/go-zero]【建议】希望能增加隐式转换

2024-02-18 258 views
8

在浏览器的环境中,关于form表单的内容,如果不做特殊处理,一般input接收的都是string类型,

但是如果这个字段在后端的定义是一个int类型时,前端需要显示的把这个字段从string类型转译成int类型。

比如

formData['a'] = +formData['a']
formData['b'] = +formData['b']
formData['c'] = +formData['c']

post(url, formData)

类似这样的代码在前端做form提交时是比较多的,如果go-zero可以提供隐式转换,就可以大大的节省前端这类脏代码

比如

// 现在已有
a = 123  // 不报错
a = '123' // 类型错误
a = '123s' // 类型错误
post(url, formData)

// 增加
a = 123  // 不报错
a = '123' // 不报错
a = '123s' // 类型错误
post(url, formData)

回答

7

你在传递的时候 肯定必须按照 后端定义的类型进行传递呀 后端肯定得规范呀 前端按照这个规范来呀 如果隐藏转换有的无法转换 这个得程序员在后端进行加上拦截器进行处理 然后进行上下文传递 这种可以更加开放 只不过官方的默认是 post json path form 进行自动进行到对象到前端

6

请看清楚,这个是在框架层次已经做完了,业务层接受的信息还是定义好的类型,是没有感知的。

2

image

输入是string 是有现成方案的。可以直接用 google.golang.org/protobuf/encoding/protojson,当然 需要proto来定义字段了。

另外 由于int64前端可能溢出,所以之前我们框架也会把int64转换为string传递给前端。这种需求很常见的,zero可以考虑下。

3

前端js不是强类型,容易出现这个问题

8

标题已经明确了这个问题的属性,隐式。

当你传一个string时结果正确,那么你可能压根都会不知道服务端原来要的是int。

go里面要把[]string转成[]interface{}也得自己搞,加一个容易,减一个太难。

调用方应该清楚的知道参数类型,不知道就搞明白,类型不对,那就转对。

保持简单!

6

真的难顶 把这些可配置 可扩展 交给大家自由发挥 才可以发挥 go的优势 少即是多 接口是最大特色