【发布时间】:2020-02-11 18:30:58
【问题描述】:
我有一个 ASP.NET Core 2.1 API Web 服务。
应该使用可以使用以下请求的新 API 端点扩展 Web 服务(HTTP POST 正文是 www-form-urlencoded):
foo=1&bar=2&baz=3&baz_2=3&baz_2=4
上面的 www-form-urlencoded 以一种更易读的方式:
- 参数
foo,值为1。 - 参数
bar,值为2。 - 参数
baz,值为3。 - 参数
baz_2,值为4。
参数foo 和bar 在请求中完全存在且仅存在1 次。参数baz 在请求中至少存在1 次。 baz 参数出现多次是很常见的,但我见过只有一个 baz 参数的情况。
我对发件人没有影响。我可以选择使用上述格式的请求,或者根本无法接收数据。我需要这些数据,这些数据只会以上述方式提供。
我已经为请求中仅存在 1 次的参数建模了一个 C# 模型类:
namespace StackOverflow.WebAPI.Models
{
public class ConsumeRequest
{
public int foo { get; set; }
public int bar { get; set; }
public ConsumeRequest()
{
foo = 0;
bar = 0;
}
public ConsumeRequest(int foo, int bar)
{
this.foo = foo;
this.bar = bar;
}
}
}
模型应作为Action参数,如:
namespace StackOverflow.WebAPI
{
public class EndpointController : BaseController
{
[HttpPost]
public JsonResult Consume([FromBody] ConsumeRequest data)
{
// Do something with data.
return new JsonResult("ok");
}
}
}
理想情况下,baz 将是 List<int>。 List 的顺序将代表bazs 的“顺序”(baz,baz_2,baz_3,...)。
如何扩展模型实现以使用 baz 参数?
【问题讨论】:
-
你试过什么?这似乎是一项家庭作业。
-
我可以尝试什么?文档指出,当参数多次出现时(完全相同的参数名称没有前缀/后缀),则有可能将其实现为数组。我没有找到有关此前缀/后缀内容的信息。而且实现数百个
baz_N属性是不切实际的。可能缺少实例,因为我直到N才实施,但那里有baz_(N+1)
标签: c# asp.net-core .net-core model