C# Web Api一个小例子

Posted 飞天阿豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Web Api一个小例子相关的知识,希望对你有一定的参考价值。

 

1) 认识Web Api(C#)

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

那么RESTful又是什么?

简单的解释,RESTful属于一种设计风格,REST中的GET,POST,PUT DELETE来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,则它的服务称为"RESTful风格应用服务"

2) 新建项目使用Web Api

只需要建立一个空项目,并勾选Web Api即可。

3) 观察项目结构

WebApiMVC结构上有着异曲同工的妙处,在MVC6中还合并了两个框架,曾经有位大牛说过“WebApi就是MVC的一部分”。我们先看下这个WebApiConfig.cs文件内的路由配置。

可以看到WebApi的路由是通过api/{controller}/{id}的方式请求的方式,不像MVC的模式有action。但我们也可以修改成MVC模式那样,但是微软不建议,我们先用这个默认的方式试一下。

4) 新建控制器

Controllers控制器新建控制器,选择包含读/写操作的Web API2控制器”确定。

 

会默认新建一个DefaultController.cs文件,里面代码如下,继承了ApiController类。可以看到要想访问某个控制器的某个”方法”,只需要根据对应的提交方法和参数提交,就可以执行对应的”方法”了。

    public class DefaultController : ApiController

    {

        // GET: api/Default

        public IEnumerable<string> Get()

        {

            return new string[] { "value1", "value2" };

        }

 

        // GET: api/Default/5

        public string Get(int id)

        {

            return "value";

        }

 

        // POST: api/Default

        public void Post([FromBody]string value)

        {

        }

 

        // PUT: api/Default/5

        public void Put(int id, [FromBody]string value)

        {

        }

 

        // DELETE: api/Default/5

        public void Delete(int id)

        {

        }

}

 

新建一个html页面,利用ajax get异步请求Default控制器,因为get请求不带参数,所以会默认找到Get()这个方法,返回字符数组。运行程序,打开html页面。

 

弹出了返回的数据。

 

修改url路径为有id在后面,请求的是带id参数的get方法

 

新建一个类,作为post请求使用

 

修改post提交的方法,接受Class1类并返回新的值

 

修改ajax提交方式为post,增加data参数,组装成Class1类的数据,提交。接收返回并弹出。

 

修改put提交的方法,接受Class1类,id并返回新的值

 

修改ajax提交方式为put,增加data参数,请求链接加上id,组装成Class1类的数据,提交。接收返回并弹出

 

修改修改delete提交的方法,当id有值时等于删除成功

 

修改ajax提交方式为deleteurl提供删除的数据的id,获取返回值弹出

 

 

还可以修改默认路由为MVC的方式,不过访问时要建立对应的action方法。

 

 

以上是关于C# Web Api一个小例子的主要内容,如果未能解决你的问题,请参考以下文章

jetty 介绍以及小例子

基于委托的C#异步编程的一个小例子 带有回调函数的例子

C# 小例子

spring的一个小例子--解析前面的小例子

c#异步编程小例子

c# BackGroundWorker 多线程操作的小例子