此文章发布于40
个月前,部分信息可能已经过时
,请自行斟酌确认。
客户端请求的 Json
参数被封装到了一个变量中,如下可以看到是用 FaceResults
存放的数组。
{
"FaceResults": [
{
"DeviceName": "DOX-A-HH01@XB01",
"SerialNumber": "11120C4UUF2102350C00",
"FaceAttr": {
"AgeUpLimit": 40,
"AgeLowerLimit": 20,
"Gender": 1,
"GlassStyle": 0,
"Mask": 2
},
"BigImageURL": "/alarm/face/2020-09.jpg",
}
]
}
服务端收到参数后需要对其进行校验,可通过以下方式。
解决方案一(基于 Kotlin)
服务端接收的话需要建如下类:
/**
* 请求参数包装类
*
* @author xinggang
* @create 2021-10-01
*/
data class FaceResultWrapperParam(
@JsonProperty("FaceResults")
@field:NotNull
@field:Valid
var FaceResults: List<FaceResultParam>? = null
)
data class FaceResultParam(
@JsonProperty("DeviceName")
@field:NotEmpty
var DeviceName: String? = null
//其它属性
)
控制器
@PostMapping("/reportFaceResult")
fun reportFaceResult(@Validated @RequestBody param: FaceResultWrapperParam): ResMsg {
return success(param)
}
解决方案二
使用 Map<String, Object>
接受 request body
,自己反序列化到各个 entity
中。
此文内容基于
Kotlin
语法,使用 Java
方案类似。