gin 获取表单参数的方法是 c.PostForm("name")
,当 name
这个参数不存在时,会默认返回空字符串 ""
然后问题来了,如果用户 POST 请求 api,在 form 里传入了 name=
这样的数据的话,通过 c.PostForm("name")
也将获取到空字符串 ""
,这就导致程序根本没法区分这个空字符串是因为用户没有指定 name
这个参数,还是将 name
这个参数设定成了空字符串
也许会有人觉得这两者没有区别,但是考虑下面这个 API 的话,两者会截然不同:
请求一个 API,可以更新数据库中指定的一些字段,没有指定的字段则不做任何更新。 在这个 API 中, 用户在 post form 中 指定了 name=
的话意味着将 name 字段清空,设置成 ""
, 而不指定 name 参数的话则意味着不对 name 字段做操作
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.