据我所知,一个合法的 JSON 对象不仅可以是对象或数组,一些原始值也是可以的,比如字符串"foo"
、数字3
、布尔值true
也应该都是合法的 JSON 值。
但是今天遇到了一个问题,我想设计一个接口来修改用户的头像。(头像 avatar 在数据库里也就是一个字符串)
想设计得尽量 RESTful 一点,用了 PUT 方法,请求路径大概是这样:
/api/users/{用户的 id}/avatar
虽然只是一个字符串,但想和其它接口一样都接收 JSON,返回 JSON 。所以不希望用text/plain
而是一样采用application/json
的 MIME 类型。我想,既然一个字符串也是合法的 JSON,那应该也没问题,因此就在 axios 的 data 里传了一个字符串:
但是发现它给我自己转换掉了,而且不是JSON.stringify
那种转换。
我本以为请求体里会是"a single string"
,但结果居然是a single string
:
这根本就不是合法的 JSON 啊。
虽然再包一层也能解决,但很不舒服。
后来查了一下,似乎是 JSON 的定义出了问题:
于是我就想问下,大佬们有遇到过这个问题吗?怎么优雅地解决这个问题呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.