.net core 杂记:WebAPI的XML请求和响应

一般情况下,restfult api  进行数据返回或模型绑定,默认json格式会比较常见和方便,当然偶尔也会需要以XML格式的要求

对于返回XML,普通常见的方式就是在每个aciton方法进行诸如XmlFormatter此类的序列化处理,

而对于接收XML,则是进行一些额外的XML解析操作或反序列化处理。

下面记录和学习较为便捷的WebAPI的XML请求和响应处理使用,不喜勿喷,有错请指教。

.net core 版本:2.2

添加XML格式支持

1、安装 Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包

2、再Startup.ConfigureServices 中调用 AddXmlSerializerFormatters 来配置对 System.Xml.Serialization.XmlSerializer的 实现。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddXmlSerializerFormatters();
}

响应XML数据

想再Action层面、Controller层面或全局范围内指定特定操作响应XML格式,只需添加 [Produces] 过滤器,会自行处理成xml格式响应,无需再进行其他繁杂的处理步骤

如下指定Action方法响应XML格式:

[HttpGet("getstudent/{id}")]
[Produces("application/xml")]
public Student GetStudent(int id)
{
    var obj = new Student
    {
        Age = 12,
        Name = "123123"
    };
    return obj;
}

将直接返回如下:

XML请求

XML格式数据请求则使用[Consumes]

如下代码:

下面示例以XML格式请求,程序会自动解析并绑定Student模型类,返回此对象的json格式(webapi 默认返回的格式)

[HttpPost("poststudent")]
[Consumes("application/xml")]
public Student PostStudent(Student obj)
{
    return obj;
}

结果如下:

原文地址:https://www.cnblogs.com/qiuguochao/p/11129357.html

时间: 2024-10-11 06:53:54

.net core 杂记:WebAPI的XML请求和响应的相关文章

ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控

【转】ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控

ASP.NET Core MVC/WebAPi如何构建路由?

前言 本节我们来讲讲ASP.NET Core中的路由,在讲路由之前我们首先回顾下之前所讲在ASP.NET Core中的模型绑定这其中有一个问题是我在项目当中遇见的,我们下面首先来看看这个问题. 回顾ASP.NET Core模型绑定 我们有这样一个场景:修改个人资料中的各个属性,此时每个属性的值的类型肯定是不一样的,所以我们将值定义为object,如下model. public class BlogViewModel { public string prop { get; set; } publi

Ajax提高篇(3)在请求和响应中使用 XML(1)

XML 是编程中最常用的数据格式之一,对于异步应用程序中的服务器响应能够带来切实的好处.在Ajax中也不例外. Ajax 应用程序就表现在其核心对象所选的名称 -- XMLHttpRequest,这个名称不是很好,因为它并没有反映技术上的实际情况.换句话说,多数人之所以认为 XML 是 Ajax 的核心组成部分,仅仅是因为他们想当然地以为 XMLHttpRequest 对象在任何时候都使用 XML.但实情并非如此,本文第一部分给出了原因.实际上,您将看到在多数 Ajax 应用程序中 XML 很少

Ajax提高篇(4)在请求和响应中使用 XML(2)

----前言 在 Ajax 应用程序中,使用 XML 作为发送数据的格式的理由很少,但使服务器向 客户机回发 XML 的理由很多. 理由:(1)客户机以名称/值对发送请求(2)服务器无法(以一种标准方式)发送名称/值对 在大多数情况下,客户机不需要使用 XML,因为他们会使用名称/值对发送请求.因此,您可能会发送一个这样的名称:name=jennifer.只需简单地在连续的名称/值对之间添加一个 "与" 符号(&),即可将其放在一起,就像这样:name=jennifer&

写一个ActionFilter检测WebApi接口请求和响应

我们一般用日志记录每次Action的请求和响应,方便接口出错后排查,不过如果每个Action方法内都写操作日志太麻烦,而且客户端传递了错误JSON或XML,没法对应强类型参数,请求没法进入方法内, 把日志记录操作放在一个ActionFilter即可. [AttributeUsageAttribute(AttributeTargets.Method, Inherited = false, AllowMultiple = false)] public class ApiActionAttribute

ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面

DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会将这个文件响应给客户端.如果我们能够将针对目录的请求重定向到这个默认文件上,一切就迎刃而解了.实际上DefaultFilesMiddleware中间件的实现逻辑很简单,它采用URL重写的形式修改了当前请求的地址,即将针对目录的URL修改成针对默认文件的URL.[本文已经同步到<ASP.NET Cor

ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求

通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddleware处理请求的逻辑,大部分读者都应该想得到:它根据请求的地址找到目标文件的路径,然后利用注册的ContentTypeProvider根据路径解析出与文件内容相匹配的媒体类型,默认情况下得到的媒体类型是根据目标文件的扩展名解析出来的.解析出来的媒体类型将作为响应报头Content-Type的值.St

Ajax发送XML请求案例

如果请求参数较多,而且请求参数的结构关系复杂,则可以考虑发送XML请求.XML请求的实质还是POST请求,只是在发送请求的客户端页面将请求参数封装成XML字符串的形式,服务器端则负责解析该XML字符串.当然,服务器获取到XML字符串后,可借助于dom4j或JDOM等工具来解析. 程序清单:Ajax02request/xml/second.jsp 1 <%@ page contentType="text/html; charset=UTF-8" language="jav