webapi 状态返回 php,让WebAPI 返回JSON格式的数据实例教程
在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格式的数据实例教程相关推荐
- Jquery 将后台返回的字符串转换成Json格式的数据
//code by:博客园-曹永思 第一步:将DataTable转换成 Json格式的数据 方法 一 View Code /// <summary>/// DataTable转成Json格 ...
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
$.ajax返回的JSON格式的数据后无法执行success的解决方法 参考文章: (1)$.ajax返回的JSON格式的数据后无法执行success的解决方法 (2)https://www.cnbl ...
- @ReponseBody返回json格式的数据
springmvc返回json格式的数据
- asp.net MVC控制器中返回JSON格式的数据时提示下载
Asp.net mvc在接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("# ...
- django返回json格式的数据的方法
需求问题描述: 在使用ajax时,回调函数需要接受多个参数,查询资料,得知使用json格式的数据比较好(当然也可以使用xml).由于项目使用的是django,这就牵扯到django后端如何传输json ...
- java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据
一.在PC Window(QT5版本) 1.1.构建URL 1.2.构建HTTP请求头 1.3.连接信号与操作,接收服务器回复的消息 槽函数这里我们要在头文件定义,然后把处理过程实现. void Ma ...
- 如何在Django中接收JSON格式的数据
Django做了大量工作简化我们的Web开发工作, 这其中当然也包括接收来自客户端的数据这一普遍需求. 大部分时候,从客户端传入的数据主要是FORM的POST数据,和来自URL的GET数据, 在Dja ...
- php 接收curl json数据格式,curl发送 JSON格式POST数据的接收,以及在yii2框架中的实现原理【精细剖析】...
1.通过curl发送json格式的数据,譬如代码: function http_post_json($url, $jsonStr) { $ch = curl_init(); curl_setopt($ ...
- Spring MVC--自定义HttpMessageConverter接收JSON格式的数据
替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...
- Spring MVC--接收JSON格式的数据
Spring mvc使用开源的Jackson包来处理JSON格式的请求或相应消息. index.jsp <%@ page language="java" contentTyp ...
最新文章
- STM32硬件错误(HardFault_Handler)位置判断
- jupyter 代码自动补全_在 Pycharm 中安装及使用 Jupyter (图文详解)
- 互联网金融售前心得数据脱敏分析 | PMCAFF微分享
- 他手边有太多事要做了
- oracle导出导入emp,oracle导入导出操作
- C语言工程实践-简单文本编辑器
- chrome下input[type=text]的placeholder不垂直居中的问题解决
- python模块之lib2to3(py2转py3自动化工具)
- 回调java 简书_Java接口回调机制详解【转】
- android 复制应用程序,Android限制复制,粘贴在应用程序之间查看
- 【HDOJ7055】Yiwen with Sqc(字符串,区间出现次数平方和,两次差分)
- 性能分析工具Linux perf使用经验
- saltstack管理七之minion端备份
- 服务器美萍管理系统,美萍服装管理软件互联网版(Web会员管理软件、连锁店会员卡管理系统、B/S版连锁会员管理系统)...
- CocosCreater 接入手Q (QQ小游戏)、小米快游戏 接入指南、脱坑指南
- 利用脚手架工具搭建一个新的react项目
- 智明星通 CEO 唐彬森:创业过程中的几笔学费
- 案例——淘宝轮播图和土豆网鼠标经过显示遮罩
- 创建一个rails入门项目并运行
- http、tcp/ip、socket
热门文章
- c++ 空类大小不为0的原因
- 拓端tecdat|Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
- 拓端tecdat|R语言使用贝叶斯层次模型进行空间数据分析
- 计算机主机拆解报告心得体会,计算机拆装实验报告心得体会(共10篇).doc
- 2016 【第七届蓝桥杯省赛】 C/C++ B组
- Django一些常用操作记录
- html辅助方法实现原理,前端每日实战:苦练 CSS 基本功——图解辅助线的原理和画法...
- tensorflow+python flask进行手写识别_Flask发布模型2
- Java从入门到精通 第17章 对象的引用与传递
- 2018谷歌学术影响因子发布:CVPR排名泛AI领域第一