将包含 Header 属性 连字符的请求绑定到 .Net Core 3.1 API
Bind request containing Header property with Hyphens to .Net Core 3.1 API
引用 ,我尝试使用 .NET Core 3.1 中的代码从 header 中接受带连字符的 属性 名称 (test-property) 并将其翻译成我的class 的内部名称 (testProperty)。我正在使用 System.Text.Json。这是我的代码:
[HttpPut]
public string Put([FromHeader]PostModel header)
{
return header.testProperty;
}
public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader]
[Required]
public string testProperty { get; set; }
}
当我在 header 中使用 属性 test-property 调用 API 时,它 returns 验证错误“需要 testProperty 字段。 “当我更改 header 以通过测试 属性 而不是 test-property 时,API 运行正常并且 returns always-interesting 字符串“Hello world ”。我觉得我错过了一些明显的东西,但我一辈子都弄不清楚是什么。
JsonPropertyName
指定序列化和反序列化时出现在 JSON 中的 属性 名称。如果您使用 json 从 body 发送数据,效果很好。您所做的来自 header,您需要进行如下更改:
public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader(Name = "test-property")]
[Required]
public string testProperty { get; set; }
}
引用
[HttpPut]
public string Put([FromHeader]PostModel header)
{
return header.testProperty;
}
public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader]
[Required]
public string testProperty { get; set; }
}
当我在 header 中使用 属性 test-property 调用 API 时,它 returns 验证错误“需要 testProperty 字段。 “当我更改 header 以通过测试 属性 而不是 test-property 时,API 运行正常并且 returns always-interesting 字符串“Hello world ”。我觉得我错过了一些明显的东西,但我一辈子都弄不清楚是什么。
JsonPropertyName
指定序列化和反序列化时出现在 JSON 中的 属性 名称。如果您使用 json 从 body 发送数据,效果很好。您所做的来自 header,您需要进行如下更改:
public class PostModel
{
[JsonPropertyName("test-property")]
[FromHeader(Name = "test-property")]
[Required]
public string testProperty { get; set; }
}