c# - 我可以为 POST 和 PUT API 请求使用自定义 JsonSerializer 来处理接口参数吗?
问题描述
我正在尝试将接口参数作为我创建的 POST 和 PUT API 的请求对象的一部分传递,但我不确定如何添加 JSON 反序列化器以便能够指定哪个具体类用于哪个服务。如何指定我想将 FooRequestData 用于一个,将 FooOtherRequestData 用于另一个?
[ApiController]
[Route("api/[controller]")]
public class FooController
{
// POST api/<APIController>
[HttpPost]
public FooResponse Post(FooRequest request)
{
return FooService.Post(request);
}
// PUT api/<APIController>
[HttpPut]
public FooResponse Put(FooRequest request)
{
return FooService.Put(request);
}
}
public class FooRequest : IRequest<Foo>
{
public IRequestData RequestData { get; set; }
}
public class FooRequestData : IRequestData
{
public string Boo { get; set; }
}
public class FooOtherRequestData : IRequestData
{
public string Hoo { get; set; }
}
解决方案
我认为这个对另一个问题的回答可能对您有用:创建一个结果过滤器并将其添加到您想要指定行为的控制器中。
最初我认为TextOutputFormatter可以工作,但似乎没有办法检查请求输出格式的控制器或服务。
推荐阅读
- c++ - Compare std::variant with int using C++20 <=> is not a constant expression
- laravel - 关于 laravel 中的验证文件的验证错误
- azure - Azure devops 构建管道 - 发布工件过程
- toit - 如何在 Toit 中生成随机数?
- angular - 我可以像这样链接可观察对象吗?我实现了一些东西,但不确定这是最好的方法吗?
- data-structures - 需要多少探针才能避免散列冲突?
- sql - 从上一行更新记录
- javascript - 列表/手风琴在按钮上方的定位?(语义用户界面)
- cmake - 如何通过使用特殊参数调用 cmake 来更改 CMakeLists.txt 中的选项
- jitsi - JITSI 视频会议 - 当主持人/主持人离开会议时,是否有任何配置或 API 可以踢出所有参与者?