问题描述
我设计了一个请求,该请求将接受所有类型的输入,例如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。