说说Web API数据格式化——Json
题外话
一同事离职了,我去上厕所的路上正巧碰到他办完离职手续出来,抱着他的全部家当,最值钱的可能就是那个两块钱的蓝色杯子和手中的雨伞了。在一块儿走向厕所的长长楼道里,我对他说:丫的,你是不是找到别的发财之道了?如果有好工作了挣钱了可别忘了我阿?是不是不打算在这“屌丝之城”待了?他一直似笑非笑的不语。他撒完可能是在这幢楼上的最后一泡尿说:我走了!做PHP去。然后我“哦”了一声。外边还在下着雨...
我眼中的Web API
据说当年
ASP.NET MVC
团队和WCF Web API
团队的负责人是同一个人,然后他就想怎么把两个团队合并在一起,使大家都可以更轻松的工作。然后他们就开始了合并工作,也就是在Visual Studio 2012发布的时候,MVC 4.0 和ASP.NET Web API一同走进了大家的视线中,带来的Razor视图极大的提高了我们的生活质量。Web API的出现,使之成为创建移动客户端的HTTP服务的新框架,同时也是构建 RESTful 服务的理想平台!我的第一次就给了离职那位同事,别想歪,是用Web API方式为移动端提供数据。
我今天不想去说
Web API
的什么先进的HTTP模型、支持路由和重新路由、基于动作响应(约定大于配置)、Action过滤、异常处理、依赖反转、自托管等等一些内容,因为我感觉我可能大概也不会说的太清楚,可以点这里去看看,也可以看看这里。我要说的是它的最方便的一个内容—— 内容协商。简单点说,就是可以自定义数据返回格式!json、太TMD的好使了。
硬生生的干货
在不影响性能开销的前提下,使用自定义的
JsonContentNegotiator
替换系统默认的DefaultContentNegotiator
是最好的方式,代码如下:
public class JsonContentNegotiator : IContentNegotiator
{
private readonly JsonMediaTypeFormatter _jsonFormatter;
public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
{
_jsonFormatter = formatter;
}
public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
{
var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
return result;
}
}
建好这个类后,在
WebApiConfig.cs
中注册下就好了,代码如下。插一句:API的全局异常、日志也可以在这注册哦!
public static class WebApiConfig
{
// 这是第一句
static JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
public static void Register(HttpConfiguration config)
{
//这是第二句
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
如果你想更深入的了解Content Negotiation的知识,点这里这里
其实你完全也可以傻傻的去序列化成json返回,我只是想说这是在ASP.NET Web API中最合适的一种方式。
窗外的天空
太阳大大的照的我挣不开眼了,楼下的喇叭里洗脑式的喊着“康师傅老坛酸菜牛肉面”,我去晒太阳了。
说说Web API数据格式化——Json的更多相关文章
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
<ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...
- Web Api 中返回JSON的正确做法
在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方法,本文提供两种方式,一种传统的,一种作者认为是正确的方法. JSON in Web API – the formatter b ...
- Web Api 中返回JSON的正确做法(转)
出处:http://www.cnblogs.com/acles/archive/2013/06/21/3147667.html 在使用Web Api的时候,有时候只想返回JSON:实现这一功能有多种方 ...
- 解决GJson 获取web api数据出现Not a JsonObject问题
服务器端web api服务采用asp.net web api编写,对请求的数据序列化成Json格式的字符串进行传递. 客户端采用Java进行接收处理,处理采用GJson进行解析,出现Not a Jso ...
- Web API对application/json内容类型的CORS支持
假设有一简单架构分为前后两部分,其一是Angular构成的前端页面站点,另一个则是通过ASP.NET Web API搭建的后端服务站点.两个站点因为分别布署,所有会有CORS(Cross-Origin ...
- ASP.NET Web API 2 返回 Json格式
最近在学习ASP.NET的Web API,刚刚开始以为会有些复杂,结果却非常简单. 学习的地址:http://www.asp.net/web-api/overview/getting-started- ...
随机推荐
- int android.graphics.Bitmap.getRowBytes()
int android.graphics.Bitmap.getRowBytes() Return the number of bytes between rows in the bitmap's pi ...
- Sqlte数据库
1. 收缩数据库. 指令:VACUUM
- ZookeeperNet太难用,写了个RetryHelper来进行配套使用
普通的zk用法,如下写法: zk.Exists("/aaa", true); zk.Create(...); 但是由于这些API会抛Zookeeper的Exception,比如Co ...
- Linux Red hat修改主机名
步骤一:修改etc/hosts文件内容为 [root@kypt01 /]# cd etc[root@kypt01 etc]# cat hosts127.0.0.1 localhost kypt01 l ...
- Swift编程语言中的方法引用
由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与 ...
- OpenResty(nginx)操作mysql的初步应用
OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. OpenResty ...
- CSS3学习笔记--line-height:150%与line-height:1.5的真正区别
代码: <div style="line-height:150%;font-size:16px;"> 父元素内容 <div style="font-si ...
- Retrofit
Retrofit 标签(空格分隔): 第三方&开源 Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordi ...
- Spring4 MVC Hibernate4集成
Spring4 MVC Hibernate4集成 一. 本文所用环境 Spring4.0.3.RELEASE Hibernate4.3.5.Final Mysql 二. 工程目录 三. ...
- Spring3系列8- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...