我不知道这是否仍然是一个问题,但诀窍是既不要以“表单数据”的形式发布,也不要以“x-www-url-encoded”的形式发布。您必须发布“原始”内容:
假设情况:
http://www.example.com/mymodel
表单数据
您的标头可能如下所示:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="basicModules"
[1,2,3,4]
----WebKitFormBoundaryE19zNvXGzXaLvS5C
结果是一个字符串"[1,2,3,4]"
获得(类型)验证,但失败
x-www-url 编码
在这种情况下,标题是这样的:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
basicModules=%5B1%2C2%2C3%2C4%5D
其结果与表单数据完全相同。验证失败的原因是basicModules
是字符串"[1,2,3,4]"
raw
为了让它工作,你的标题必须看起来像这样:
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
{"basicModules":[1,2,3,4]}
这会得到你想要的结果,并且类型验证有效。
所以最后,您可以用 JSON 的方式填充最复杂的模型。例如
POST /mymodel/create HTTP/1.1
Host: www.example.com
Cache-Control: no-cache
{"user": {
"name": {
"first":"John",
"last":"Doe"
},
"age":25,
"pets":[{
"name":"Garfield",
"type":"cat"
},
{
"name":"Rudolph",
"type":"reindeer"
}]
}