单个Web API请求,它接受C#中的所有类型的输入

问题描述

我设计了一个请求,该请求将接受所有类型的输入,例如XML,JSON等。
因此,该方法将做出响应并给出相应的输出
有什么例子吗?

我尝试了以下代码
当我从邮递员那里打电话给它时,

415错误

[HttpPost("/Getoutput",Name = nameof(Getoutput))]
[Consumes("application/xml","application/json","text/plain")]        
public IActionResult Getoutput(dynamic request)
{
    //process         
    return new ObjectResult(res.ToString());
}

解决方法

允许用户提交所有输入类型可能是非常危险的想法。您永远不会知道您的用户将提交什么。

如果您只想接受基于文本的输入(例如您的示例尝试做的事情),接受json/xml/text,则可以尝试以下操作:

1。定义绑定模型。否dynamic

public class MyRequestBindingModel
{
    // the type of Content.
    public string Type { get; set; }

    // the serialized json/xml/text content.
    public string Content { get; set; }
}

2。您的控制器操作:

[HttpPost("/GetOutput")]
public IActionResult GetOutput([FromBody] MyRequestBindingModel request)
{
    // process
    switch(request.Type.ToLower())
    {
        case "json": _processJsonInput(request.Content); 
        case "xml": _processXmlInput(request.Content); 
        default: _processTextInput(request.Content); 
    }

    // do something else you want
}

以上示例中的switch语句仅基于提供的Type展示了如何处理字符串内容的想法。

如果API调用中的Content是XML,而您想返回XML,此答案可能会有所帮助:
Helpful Answer