旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

让WebAPI 返回JSON花样的数据实例教程【C#.Net教程】,javascript,WebAPI,JSON,api,web,搭建,返回

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:130评论:0


导读:在RestFul作风流行的年代,对接接口大多数人会挑选运用JSON,XML和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<System.Net.Http.Formatting.JsonMediaTypeFormatter>().First();
 jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();//  Web API 路由config.MapHttpAttributeRoutes();

完全代码以下:

        /// <summary>/// 设置WebApi/// </summary>/// <param name="app"></param>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<System.Net.Http.Formatting.JsonMediaTypeFormatter>().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 返回JSON花样的数据实例教程的细致内容,更多请关注ki4网别的相干文章!

标签:javascriptWebAPIJSONapiweb搭建返回


欢迎 发表评论: