关闭

WebAPI学习(一)——创建Web API程序

13679人阅读 评论(11) 收藏 举报
分类:


   引言


   在公司中用到的都是webAPI的应用程序,这个东西之前没有接触过。但是这个并不是什么新鲜的东西,因我们


之前有mvc的基础,所以说学习这个东西还是比较容易的,在开始的时候自己可能突然蒙圈了。因为在人家项目中用


到的东西自己之前都没有接触过,感觉非常的陌生甚至整个混乱了。但是当我们静下心来好好想想的话是非常容易


的,就是在某些写法上不太一样,其余的都差不多,下面就给大家创建第一个程序。


  创建一个Web API程序


   启动VS2012创建一个新项目,在已经安装的模板中选择 ASP.NET MVC4 Web API程序


 


   在ASP.NET MVC项目对话框中选择Web API项,点击确定 


       


   创建成功之后工程中会自动添加一个Web API服务控制器,上面并附带访问地址 


    


   项目解决方案,选择Models文件夹右键 添加一个Model类 



 



   代码如下: 


namespace Git.Framework.WebAPI.Models
{
    public class Contact
    {
        public int ID { getset; }

        public string Name { getset; }

        public string Sex { getset; }

        public DateTime Birthday { getset; }

        public int Age { getset; }
    } }

 

 工程解决方案选择Controllers文件夹右键添加一个新的Web API controller

 

 在添加控制器弹出对话框中选择模板: 空API控制器

       


   控制器中添加如下代码: 


namespace Git.Framework.WebAPI.Controllers
{
    public class ContactController : ApiController
    {
        Contact[] contacts = new Contact[] 
        { 
            new Contact(){ ID=1, Age=23, Birthday=Convert.ToDateTime("1977-05-30"), Name="情缘", Sex=""},
            new Contact(){ ID=2, Age=55, Birthday=Convert.ToDateTime("1937-05-30"), Name="令狐冲", Sex=""},
            new Contact(){ ID=3, Age=12, Birthday=Convert.ToDateTime("1987-05-30"), Name="郭靖", Sex=""},
            new Contact(){ ID=4, Age=18, Birthday=Convert.ToDateTime("1997-05-30"), Name="黄蓉", Sex=""},
        };

        /// <summary>
        
/// /api/Contact
        
/// </summary>
        
/// <returns></returns>
        public IEnumerable<Contact> GetListAll()
        {
            return contacts;
        }

        /// <summary>
        
/// /api/Contact/id
        
/// </summary>
        
/// <param name="id"></param>
        
/// <returns></returns>
        public Contact GetContactByID(int id)
        {
            Contact contact = contacts.FirstOrDefault<Contact>(item=>item.ID==id);
            if (contact == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return contact;
        }

        /// <summary>
        
/// 根据性别查询
        
/// /api/Contact?sex=女
        
/// </summary>
        
/// <param name="sex"></param>
        
/// <returns></returns>
        public IEnumerable<Contact> GetListBySex(string sex)
        {
            return contacts.Where(item => item.Sex == sex);
        }
    }}

 

 浏览器访问API路径


Controller Methed

URI

GetListAll

/api/Contact

GetListBySex

"/api/Contact?sex=" + sex

GetContactByID

/api/Contact/"+id

 

   在IE浏览器中浏览出现如下效果


    


   如果在Chrome 或者 FireFox 中浏览会先下如下效果


 

 

 

 Javascript访问Web API


 在项目中添加一个About View视图


   


  代码如下:


<span style="font-family:SimSun;font-size:18px;">@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>About</title>
    <script type="text/javascript" src="/Scripts/jquery-1.7.1.min.js"></script>
    <script type="text/ecmascript">
        $(document).ready(function () {
            $("#btnAll").click(function () {
                $.getJSON("/api/Contact", function (data) {
                    var html = "<ul>";
                    $(data).each(function (i, item) {
                        html += "<li>"+item.ID+":"+item.Name+":"+item.Sex+"</li>";
                    });
                    html += "</ul>";
                    $("#contactAll").html(html);
                });
            });


            $("#btnID").click(function () {
                var id = $("#txtID").val();
                $.getJSON("/api/Contact/"+id, function (data) {
                    var html = "<ul>";
                    $(data).each(function (i, item) {
                        html += "<li>" + item.ID + ":" + item.Name + ":" + item.Sex + "</li>";
                    });
                    html += "</ul>";
                    $("#contactID").html(html);
                });
            });

            $("#btnSex").click(function () {
                var sex = $("#ddlSex").val();
                $.getJSON("/api/Contact?sex=" + sex, function (data) {
                    var html = "<ul>";
                    $(data).each(function (i, item) {
                        html += "<li>" + item.ID + ":" + item.Name + ":" + item.Sex + "</li>";
                    });
                    html += "</ul>";
                    $("#contactSex").html(html);
                });
            });
        });
    </script>
</head>
<body>
    <p>
        <input type="button" id="btnAll" value="查询所有" /> 
    </p>
    <p>
        <input type="text"  id="txtID" name="txtID"/>
        <input type="button" id="btnID" value="根据ID查询" /> 
    </p>
    <p>
        <select id="ddlSex" name="ddlSex">
            <option value="男">男</option>
            <option value="女">女</option>
        </select>
        <input type="button" id="btnSex" value="根据性别查询" /> 
    </p>
    <div id="contactAll">
    </div>
    <div id="contactID">
    </div>
    <div id="contactSex">
    </div>
</body>

</html></span>


 

   运行结果效果图


    


  Web API总结


    1.Web API 控制器(Controller) 继承ApiController


    2. Api 的 Url Map: api/{controller}/{id} 每个"Action"是通过 Http谓词(GET/POST/PUT/DELETE)映射的


   3.客户端可以通过 Http Header 的 Accept 指定返回数据的格式。默认是支持:appliction/xml 和


 application/json,当想返回比如 image/jpeg 这样的图片格式时,需要添加 MediaTypeFormatter 。比如:当


指定某个 Task 时,通过指定 Accept : image/jpeg 获取该 Task 的图片信息。

    



2
1
查看评论

ASP.NET Web API使用示例

上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的rest api,由于篇幅原因,没有在上篇博客中进行讲解,这里专门拿出来进行讨论。还是一样引用上次的案例,用asp.net 提供的web api来进行IP地址归宿地查询接口的开发。由于我机器装的是win8企业版操作系统,VS版本是2...
  • guwei4037
  • guwei4037
  • 2014-03-16 20:17
  • 33503

【Web API系列教程】1.1 — ASP.NET Web API入门

前言HTTP不仅仅服务于web页面,同时也是构建暴露服务和数据的API的强大平台。HTTP有着简单、灵活和无处不在的特点。你能想到的几乎所有平台都包含有一个HTTP库,所以HTTP服务可以遍及广泛的客户端,包括浏览器、移动设备和传统桌面应用程序。ASP.NET Web API是一个在.NET框架上构...
  • NoMasp
  • NoMasp
  • 2016-02-24 18:48
  • 10919

C# 调用WebApi

Post:private void button1_Click(object sender, EventArgs e) { string ss= HttpPost("http://localhost:41558/api/Demo/PostXXX&quo...
  • qq_23502409
  • qq_23502409
  • 2017-07-26 16:29
  • 2616

初尝Web API

HTTP 并不是只能用在网页中。它其实还是一个强大的平台,可以用来生成一些API,暴露服务和数据。HTTP很简单灵活,还非常普及。几乎所有你能想到的平台都有HTTP库,所以HTTP服务可以囊括很大范围的客户端,包括浏览器,移动设备和传统的桌面程序。 ASP.NET Web API 是.NET ...
  • ojlovecd
  • ojlovecd
  • 2012-11-10 22:05
  • 37788

web api示例

上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的rest api,由于篇幅原因,没有在上篇博客中进行讲解,这里专门拿出来进行讨论。还是一样引用上次的案例,用asp.net mvc提供的web api来进行IP地址归宿地查询接口的开发。 由于我机器装的是win8企业版操作系统...
  • niewq
  • niewq
  • 2014-05-04 22:29
  • 14575

webapi token、参数签名是如何生成的

API接口保障安全性原则:1.有调用者身份2.请求的唯一性3.请求的参数不能被篡改
  • kebi007
  • kebi007
  • 2017-06-06 00:53
  • 5541

Web Api使用详解(全部实例讲解,可直接运行看效果)

  • 2017-08-24 10:20
  • 22.22MB
  • 下载

web前端API

  • 2017-09-12 20:15
  • 8.81MB
  • 下载

关于跨域问题和安全性的一点理解

最近由于项目需要,在开发一系列浏览器插件,涉及的浏览器包括Chrome,Firefox和IE。在插件的实现中,部分功能需要通过跨域的API调用完成,这会导致一些问题,而问题在IE 浏览器中尤为突出。 首先要说明的是,跨域访问是不可避免的。原因是我们开发的是插件而不是页面,API的调用都是在当前页面的...
  • jtz_MPP
  • jtz_MPP
  • 2016-08-15 18:41
  • 5491

Web Api安全性设计

分布式通讯框架-->一个系统要访问另外一个系统中的数据,有一下三种方法,第一种分为2种 1.0 ,MVC Webapi  (严格的讲它其实仅仅是一个设计方案,而不是一个设计框架,Webapi流行的标准RESTfu) (也需要做安全性设计) 1.1 , 自己写一个.ashx一般...
  • Fanbin168
  • Fanbin168
  • 2016-03-29 19:07
  • 3035
    个人资料
    • 访问:563024次
    • 积分:18476
    • 等级:
    • 排名:第598名
    • 原创:274篇
    • 转载:20篇
    • 译文:0篇
    • 评论:5683条
    和我交谈
    点击这里给我发消息 点击这里给我发消息
    时间你好?
    博客专栏
    最新评论