我在C#中创建了一个带有4个参数的API。这工作正常。我需要做些什么才能让它接受XML文件而不是参数?
以下是代码:
public string Post(int orderID, bool internalUse, string subject, string message)
{
return "orderID: " + orderID + "; internalUse: " + internalUse + "; subject: " + subject + "; message: " + message;
}
我可以使用像这样的Post请求从Postman调用它:
http://localhost:58069/api/values/SendEmail?orderID=1234&internalUse=true&subject=Hello&message=Hello World
我宁愿使用XML文档,其中URL如下所示:
http://localhost:58069/api/values/SendEmail
并且参数将在XML文件中指定。
我尝试使用这个XML文件(也尝试使用&没有嵌套在响应标记中的参数和&没有XML版本标记):
<?xml version="1.0" encoding="utf-8" ?>
<response>
<orderID>1234</orderID>
<internalUse>true</internalUse>
<subject>Hello</subject>
<message>Hello World</message>
</response>
以下是请求在Postman中的显示方式:
这会触及我的SendEmail
方法,但所有变量都是空白的。我需要在代码方面做些什么,或者我只是没有正确创建Postman请求?
答案 0 :(得分:5)
创建模型以反映您的xml:
[XmlRoot("response")]
public class Response
{
[XmlElement("orderID")]
public int OrderID { get; set; }
[XmlElement("internalUse")]
public bool InternalUse { get; set; }
[XmlElement("subject")]
public string Subject { get; set; }
[XmlElement("message")]
public string Message { get; set; }
}
更改方法签名。使用FromBody
属性。
public string Post([FromBody] Response response)
{
return "orderID: " + response.OrderID +
"; internalUse: " + response.InternalUse +
"; subject: " + response.Subject +
"; message: " + response.Message;
}
添加对XmlSerializer
的支持:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddXmlSerializerFormatters();
}
我假设你使用的是ASP.NET Core。