.NET Core 3.1 API如何绑定请求头中带连字符的属性
问题原因
[JsonPropertyName]是System.Text.Json提供的序列化特性,仅对[FromBody]的JSON请求体绑定生效,请求头的模型绑定逻辑不读取该特性配置。默认头部绑定时只会大小写不敏感匹配属性名,所以你配置的test-property映射规则不会生效,接口只会识别testproperty/TestProperty这类和属性名拼写一致的头部字段。
解决方案
直接用[FromHeader]特性自带的Name参数指定要匹配的请求头名称即可,不需要保留[JsonPropertyName]配置:
[HttpPut] public string Put([FromHeader] PostModel header) { return header.testProperty; } public class PostModel { [FromHeader(Name = "test-property")] [Required] public string testProperty { get; set; } }
修改后传入test-property请求头即可正常绑定到testProperty属性,不会再触发必填校验错误。
内容的提问来源于stack exchange,提问作者Laurie Dickinson
相关产品推荐
相关产品推荐

