初探ASP.NET Web API

定义:
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.

意思是,ASP.NET Web API是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。

那么RESTful又是什么?
简单的解释,RESTful属于一种设计风格,REST中的GET,POST,PUT DELETE来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,则它的服务称为"RESTful风格应用服务"。
get:获取
post:添加
put:修改
delete:删除
下面进行简单实验
步骤1:创建工程
1.创建一个ASP.NET Web API应用程序
在这里插入图片描述步骤2:代码关系分析
1.默认生成的文件夹。

public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post([FromBody]string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }

2.添加实验数据

public class ValuesController : ApiController
    {
        // Set mock data
        List<string> mockDataList = new List<string>()
        {
            "Product A","Product B","Product C","Product D","Product E"
        };

        // GET api/values
        public IEnumerable<string> Get()
        {
            return mockDataList;
        }

        // GET api/values/5
        public string Get(int id)
        {
            return mockDataList[id];
        }

        // POST api/values
        public void Post([FromBody]string value)
        {
            mockDataList.Add(value);
        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
            mockDataList[id] = value;
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
            mockDataList.RemoveAt(id);
        }
    }

步骤3:Web API 客户端(只里的客户端不是访问上面的服务端的代码,这里仅仅体现一种Web API 使用的一种分方式,本人在总结 自己的学习笔记)

static void Main(string[] args)
        {
            RunAsync().Wait();
        }

        static async Task RunAsync()
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:8077/");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

                string xmlString = await client.GetStringAsync("api/News/GetAllNews");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.LoadXml(xmlString);
                XmlNodeList nodeList = xmlDoc.GetElementsByTagName("News");
                foreach (XmlNode node in nodeList)
                {
                    Console.WriteLine("新闻ID:" + node.SelectSingleNode("Id").InnerText);
                    Console.WriteLine("新闻标题:" + node.SelectSingleNode("Title").InnerText);
                    Console.WriteLine("新闻内容:" + node.SelectSingleNode("Content").InnerText);
                    Console.WriteLine("作者:" + node.SelectSingleNode("Author").InnerText);
                    Console.WriteLine("新闻发布时间:" + node.SelectSingleNode("CreateTime").InnerText);
                    Console.WriteLine("======================");
                }
                Console.ReadKey();
            }
        }

运行效果
webapi客户端调用举例简单分析
web api 客户端调用分析关于:async,和await就是 异步调用的一种方式。
web api 本质上是一种特殊的http服务。
我们通常的web服务是什么样的呢?访问一个地址返回一定格式的数据。
那么web api 和通常的web 有啥不同。本质生也是访问一个地址,然后返回数据。
差别在于,返回的数据,我们不是用浏览器解释,而是把我们关心数据用一种格式解析,当成我们调用函数的返回值。
说白了就是把向地址要数据的过程,变成了调用函数的过程。
关于web api 的特之处,体现在http增加了几个通讯方法(OPTIONS, PUT, DELETE, TRACE 和 CONNECT)。这位以api的方式使用http协议,提供了方便,向前面用的DELETE,和 PUT。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。

web api的用途
强调两个关键点,即可以对接各种客户端(浏览器,移动设备),构建http服务的框架。
web api在.net 架构中的位置Web API最重要的是可以构建面向各种客户端的服务。另外与WCF REST Service不同在于,Web API利用Http协议的各个方面来表达服。务。
**web api 应用场景原理补充
1.HTTP
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
 HTTP协议有下面三个基本特点:
 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
无状态:无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
相对于Web API来说,HTTP不只是为了生成Web页面,它也是一个强大的平台建设公开服务和数据的API。HTTP是简单、 灵活和无处不在,因此几乎任何平台都可以有一个HTTP库,因此,HTTP服务可以到达范围广泛的客户端,包括浏览器、移动设备和传统的桌面应用程序。
2.RESTful
RESTful架构概念是Fielding提出的,Fielding这号人物就是上面HTTP协议的主要设计者之一。我们先看下RESTful这个词,ful是跟在名词之后,表示程度,什么什么的,例如helpful乐于助人的,因此我们可以看出符合REST的架构就可以称为RESTful,接着我们看下REST,全称为“Representational State Transfer”,意为“表现层状态转化”。
客户端通过四个HTTP动词(PUT、GET、POST和DELETE),对服务器端资源进行操作,实现"表现层状态转化"。

应用连接:https://www.cnblogs.com/mejoy/p/6402821.html
应用连接:https://www.cnblogs.com/guyun/p/4589115.html

版权声明:本文为xie__jin__cheng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xie__jin__cheng/article/details/89468567

智能推荐

Node.js安装配置

好久都没更新博客了,今天心血来潮,决定是时候更新一篇了,首先我们来认识一下node.js。 什么是node.js? 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的...

RocketMQ之双Master集群搭建笔记记录

一:RocketMQ双master集群部署 服务器环境(我采用的虚拟机,centos6 .5【特别注意:安装的虚拟机centos系统一定得是64位的,32位的会启动不起来。即便起来了也会有很多问题,深坑勿踩】)  ip       用户名    密码        角色     模式 192.168.197.101   root        nameServer1,brokerServer1  ...

蓝桥杯试题集-基础练习题-数列特征(Java)

//做题笔记,仅自己看得懂 题目: 正确姿势:...

多线程爬取4k超高清美图壁纸

多线程爬取4k美图壁纸 前言:看完此篇文章你可以更加深入的了解多线程的使用,并且最重要的你能够下载你自己想要的超高清4k壁纸 爬取结果: 1. 分析网站 要爬取的url :http://pic.netbian.com/ a) 判断网页是动态加载还是静态加载页面。右击查看网页源代码,按Ctrl + f在源代码中搜索网站的详情页地址,从而判断整个网页是静态加载的 b) 明确爬取的目标。我们要爬取的目标...

elementUI-添加自定义图标

elementui的小图标有限,跟UI给的不一样,这个时候咋办呢?百度走起。。。。参考了两篇博主分享的 自定义elementui中的图标 和 建立图标库,这里主要用到第一种 实际中: elementUI导航栏 具体代码: 汉字转换Unicode编码: 直接打开控制台: 汉字.chatCodeAt().toString(16); 然后回车; 至于三角形的图标,我直接把箭头的 unicode 值改成了...

猜你喜欢

[Linux]——文件缓冲区

文件缓冲区 提到文件缓冲区这个概念我们好像并不陌生,但是我们对于这个概念好像又是模糊的存在脑海中,之间我们在介绍c语言文件操作已经简单的提过这个概念,今天我们不妨深入理解什么是文件缓冲区。 为什么需要文件缓冲区 当我们在程序中写下一条printf语句时,我们希望将这条语句的内容打印到屏幕上。但是如果你将语句放在循环中,难道你执行一次循环那么操作系统就要打印一次这条数据么?答案当然不是 我们对于程序...

基于FPGA的IIC协议详解——EEPROM控制器(1)

IIC协议举例 常用IIC协议使用地方 常见IIC协议的注意点 24LC64芯片读写命令的时序图 eeprom控制器的系统框图 时序图设计 代码设计 EEPROM控制器测试模块的代码 结束语 常用IIC协议使用地方 熟悉一个协议一定要知道这个协议应该用到什么地方,IIC协议作为飞利浦公司定义的一个慢速传输协议,常用于: 1、芯片寄存器的配置; 2、eeprom的读写; 本次实验我们将使用eepro...

ssm 工程简易搭建(idea 工具下)

现在都流行springboot了,大部分都给你配合了了,可以快速开发。但是今天我们回顾一下ssm的搭建,其实也挺简单的,比刚入门那会觉得简单多了。 这个先讲几点: 1.开始搭建前,idea 自己要配置maven 和tomcat和jdk ,这里就不讲了。 2.为了简化配置,我们按照“约定优于配置”的原则(这种原则在sprigboot项目里面特别明显),启动项目时,项目有个文件...

oracle简单视图read only、check option和默认权限的异同(相对于DML语句)

视图分为俩类: 简单视图:   视图所代表的sql中如果没有group by语句,   没有组函数,查询的只有一张表,那么这样的视图就是简单视图. 复杂视图   视图所代表的sql中如果有group by语句,   或者有组函数,或者查询的是多张表,那么这样的视图就是复杂视图. s_emp表格属性 默认权限 1.可以插入不满足where条件的数据,原表也会更...

HTML5-简易Canvas绘图板

除了canvas以外,还用了一丢丢meta清除页面缓存,color类型和range类型的input控件。其他基本就一些鼠标响应事件了。总之就一个十分简易的canvas绘图板。贴个源码。 大概这个鬼样子。 火狐之类的浏览器可以直接右键保存绘制的图像为*.png不过我想的是用填充白色就不用写橡皮擦了所以整个画布都是填充了白色,存的*.png并不会有透明背景。...