【发布时间】:2019-11-08 15:14:19
【问题描述】:
我正在使用 .net core 3.0 创建 Web API。我想将通用模型序列化为XML。但默认情况下,它只将通用模型序列化为JSON。
当我尝试将一个简单模型序列化为XML 时,它会正确序列化为XML。
根据传递的标头,我想序列化模型。这是我到目前为止所做的:
在startup.cs文件中:
services.AddControllers(options =>{
options.RespectBrowserAcceptHeader = true; // false by default
}).
AddXmlSerializerFormatters().
下面是代码示例:
我的通用模型:
public class ApiResponseModel<T>
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
public T Data { get; set; }
public ApiResponseModel(int errorCode, string errorMessage, T data)
{
this.ErrorCode = errorCode;
this.ErrorMessage = errorMessage;
this.Data = data;
}
}
返回数据的动作:
[HttpGet]
public async Task<IActionResult> Get()
{
IEnumerable<RoleDTO> roleList = null;
roleList = await _repository.RoleRepository.GetAllRolesAsync();
var data = new ApiResponseModel<IEnumerable<RoleDTO>>(200, "Success", roleList);
return Ok(data);
}
虽然Accept 标头指定为application/xml,但此返回JSON 响应。
但如果我只是简单地返回 roleList,它会以XML 格式给出响应。
[HttpGet]
public async Task<IActionResult> Get()
{
IEnumerable<RoleDTO> roleList = null;
roleList = await _repository.RoleRepository.GetAllRolesAsync();
return Ok(roleList);
}
我怎样才能获得通用模型的XML 响应?
【问题讨论】:
标签: asp.net-core asp.net-core-webapi asp.net-core-3.0