首页 > 解决方案 > 我可以为 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; }
    }

标签: c#json.netasp.net-web-apijson.net

解决方案


我认为这个对另一个问题的回答可能对您有用:创建一个结果过滤器并将其添加到您想要指定行为的控制器中。

最初我认为TextOutputFormatter可以工作,但似乎没有办法检查请求输出格式的控制器或服务。


推荐阅读