在RestFul风格盛行的年代,对接接口大多数人会选择使用JSON,XML和JSON的对比传送(),看看这位博主是怎么说的,虽然最后没有说完,我想大概也能略微解决心中的疑惑。

1.其实要想让WebAPI 返回JSON格式的数据很简单,只要在ConfigureWebapi方法中配置一下即可。此前需要引用两个命名空间。using Newtonsoft.Json.Serialization;using System.Linq;

2.核心代码如下:var json = config.Formatters.JsonFormatter;// 解决json序列化时的循环引用问题json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;// 移除XML序列化器config.Formatters.Remove(config.Formatters.XmlFormatter);//设置序列化方式为驼峰命名法var jsonFormatter = config.Formatters.OfType().First();

jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// Web API 路由config.MapHttpAttributeRoutes();

完整代码如下:/// /// 配置WebApi/// /// public void ConfigureWebapi(IAppBuilder app)

{//创建一个HTTP的实例配置var config = new HttpConfiguration();var json = config.Formatters.JsonFormatter;// 解决json序列化时的循环引用问题json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;// 移除XML序列化器 config.Formatters.Remove(config.Formatters.XmlFormatter);//设置序列化方式为驼峰命名法var jsonFormatter = config.Formatters.OfType().First();

jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// Web API 路由 config.MapHttpAttributeRoutes();//映射路由 config.Routes.MapHttpRoute(

name: "DefaultApi",

routeTemplate: "api/{controller}/{id}",

defaults: new { id = RouteParameter.Optional }

);//将配置注入OWIN管道中 app.UseWebApi(config);

}

3.接下来让我们来测试一下,添加一个名为ProductController的Controller,删掉所有的方法,添加一个GetProductList方法,代码如下:[HttpGet]public HttpResponseMessage GetProduct()

{var product = new { id = 1, name = "三星王炸" };

HttpResponseMessage result = new HttpResponseMessage();

result.Content = new StringContent(JsonConvert.SerializeObject(product), Encoding.GetEncoding("UTF-8"), "application/json");return result;

}

4.在浏览器中输入http://localhost:27650/api/product/GetProduct ,输出结果为

5.我们发现如果在浏览器中输入http://localhost:27650/api/product 同样也可以获得返回值,让我们来简单改造一下重新再写一个新方法[HttpGet]public HttpResponseMessage GetProduct2(string id)

{var product = new { id = id, name = "三星王炸" };

HttpResponseMessage result = new HttpResponseMessage();

result.Content = new StringContent(JsonConvert.SerializeObject(product), Encoding.GetEncoding("UTF-8"), "application/json");return result;

}

6.在浏览器中输入http://localhost:27650/api/product?id=3 和 http://localhost:27650/api/product 得到的结果分别为

为什么会出现这种现象呢,大家看看我们开始在配置WebAPI的路由规则,规则是api/{controller}/{id} ,也就是说此规则不会去匹配action的名称,而是根据传入的参数类型和个数来决定的。

7.那么如何让WebAPI 根据方法名称来匹配呢,让我们来修改一下路由规则,代码如下:config.Routes.MapHttpRoute(

name: "DefaultApi",

routeTemplate: "api/{controller}/{action}/{id}",

defaults: new { id = RouteParameter.Optional }

);

8.让我们再测试一下,浏览器中输入http://localhost:27650/api/product,看一下效果。

再输入http://localhost:27650/api/product/GetProduct 和 http://localhost:27650/api/product/GetProduct?id=5,发现两个返回的结果一样,说明访问的是同一个方法。

再输入http://localhost:27650/api/product/GetProduct2 和 http://localhost:27650/api/product/GetProduct2?id=6

结果:

测试通过。

这里仅作整理,加深印象,以防自己忘记。如有不正确的地方,欢迎不吝指教。

webapi 状态返回 php,让WebAPI 返回JSON格式的数据实例教程相关推荐

  1. Jquery 将后台返回的字符串转换成Json格式的数据

    //code by:博客园-曹永思 第一步:将DataTable转换成 Json格式的数据 方法 一 View Code /// <summary>/// DataTable转成Json格 ...

  2. $.ajax返回的JSON格式的数据后无法执行success的解决方法

    $.ajax返回的JSON格式的数据后无法执行success的解决方法 参考文章: (1)$.ajax返回的JSON格式的数据后无法执行success的解决方法 (2)https://www.cnbl ...

  3. @ReponseBody返回json格式的数据

    springmvc返回json格式的数据

  4. asp.net MVC控制器中返回JSON格式的数据时提示下载

    Asp.net mvc在接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("# ...

  5. django返回json格式的数据的方法

    需求问题描述: 在使用ajax时,回调函数需要接受多个参数,查询资料,得知使用json格式的数据比较好(当然也可以使用xml).由于项目使用的是django,这就牵扯到django后端如何传输json ...

  6. java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据

    一.在PC Window(QT5版本) 1.1.构建URL 1.2.构建HTTP请求头 1.3.连接信号与操作,接收服务器回复的消息 槽函数这里我们要在头文件定义,然后把处理过程实现. void Ma ...

  7. 如何在Django中接收JSON格式的数据

    Django做了大量工作简化我们的Web开发工作, 这其中当然也包括接收来自客户端的数据这一普遍需求. 大部分时候,从客户端传入的数据主要是FORM的POST数据,和来自URL的GET数据, 在Dja ...

  8. php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...

    1.通过curl发送json格式的数据,譬如代码: function http_post_json($url, $jsonStr) { $ch = curl_init(); curl_setopt($ ...

  9. Spring MVC--自定义HttpMessageConverter接收JSON格式的数据

    替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...

  10. Spring MVC--接收JSON格式的数据

    Spring mvc使用开源的Jackson包来处理JSON格式的请求或相应消息. index.jsp <%@ page language="java" contentTyp ...

最新文章

  1. STM32硬件错误(HardFault_Handler)位置判断
  2. jupyter 代码自动补全_在 Pycharm 中安装及使用 Jupyter (图文详解)
  3. 互联网金融售前心得数据脱敏分析 | PMCAFF微分享
  4. 他手边有太多事要做了
  5. oracle导出导入emp,oracle导入导出操作
  6. C语言工程实践-简单文本编辑器
  7. chrome下input[type=text]的placeholder不垂直居中的问题解决
  8. python模块之lib2to3(py2转py3自动化工具)
  9. 回调java 简书_Java接口回调机制详解【转】
  10. android 复制应用程序,Android限制复制,粘贴在应用程序之间查看
  11. 【HDOJ7055】Yiwen with Sqc(字符串,区间出现次数平方和,两次差分)
  12. 性能分析工具Linux perf使用经验
  13. saltstack管理七之minion端备份
  14. 服务器美萍管理系统,美萍服装管理软件互联网版(Web会员管理软件、连锁店会员卡管理系统、B/S版连锁会员管理系统)...
  15. CocosCreater 接入手Q (QQ小游戏)、小米快游戏 接入指南、脱坑指南
  16. 利用脚手架工具搭建一个新的react项目
  17. 智明星通 CEO 唐彬森:创业过程中的几笔学费
  18. 案例——淘宝轮播图和土豆网鼠标经过显示遮罩
  19. 创建一个rails入门项目并运行
  20. http、tcp/ip、socket

热门文章

  1. c++ 空类大小不为0的原因
  2. 拓端tecdat|Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
  3. 拓端tecdat|R语言使用贝叶斯层次模型进行空间数据分析
  4. 计算机主机拆解报告心得体会,计算机拆装实验报告心得体会(共10篇).doc
  5. 2016 【第七届蓝桥杯省赛】 C/C++ B组
  6. Django一些常用操作记录
  7. html辅助方法实现原理,前端每日实战:苦练 CSS 基本功——图解辅助线的原理和画法...
  8. tensorflow+python flask进行手写识别_Flask发布模型2
  9. Java从入门到精通 第17章 对象的引用与传递
  10. 2018谷歌学术影响因子发布:CVPR排名泛AI领域第一