WebApi系列~基于RESTful标准的Web Api

WebApi系列~基于RESTful标准的Web Api

回到目录

微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:

GET:生到数据列表(默认),或者得到一条实体数据

POST:添加服务端添加一条记录,记录实体为Form对象

PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输

DELETE:删除 服务端的一条记录

注意上面公开的API接口都是在XMLHttpRequest情况下调用的,当然你可以使用jquery的ajax组件来完成这个请求调用,它的代码更加面向对象,下面举例说明一下

这是页面的HTML代码部分,实现最基本的CRUD操作

<fieldset>
    <legend>测试Web Api
    </legend>
    <a href="javascript:add()">添加(post)</a>
    <a href="javascript:update(1)">更新(put)</a>
    <a href="javascript:deletes(1)">删除(delete)</a>
    <a href="/api/test">列表(Get)</a>
    <a href="/api/test/1">实体(Get)</a>
</fieldset>
<script>

    function add() {

        $.ajax({
            url    : "/api/Test/",
            type   : "POST",
            data   :{"UserID":4,"UserName":"test","UserEmail":"[email protected].com"},
            success: function (data) { alert(JSON.stringify(data)); }

        });

    }

    //更新
    function update(id) {
        $.ajax({
            url    : "/api/Test?id="+id,
            type   : "Put",
            data   :{"UserID":1,"UserName":"moditest","UserEmail":"[email protected]"},
            success: function (data) { alert(JSON.stringify(data)); }
        });

    }
    function deletes(id) {
        $.ajax({
            url    : "/api/Test/1",
            type   : "DELETE",
            success: function (data) { alert(data);}
        });

    }
</script>

下面是ApiController部分的代码:

   /// <summary>
    /// Test模块API
    /// URI:/Api/Test
    /// </summary>
    public class TestController : ApiController
    {

        /// <summary>
        /// User Data List
        /// </summary>
        private readonly List<Users> _userList = new List<Users>
       {
           new Users {UserID = 1, UserName = "zzl", UserEmail = "[email protected]"},
           new Users {UserID = 2, UserName = "Spiderman", UserEmail = "[email protected]"},
           new Users {UserID = 3, UserName = "Batman", UserEmail = "[email protected]"}
       };
        /// <summary>
        /// 得到列表对象
        /// </summary>
        /// <returns></returns>
        public IEnumerable<Users> Get()
        {
            return _userList;
        }

        /// <summary>
        /// 得到一个实体,根据主键
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Users Get(int id)
        {
            return _userList.FirstOrDefault(i => i.UserID == id);
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="form">表单对象,它是唯一的</param>
        /// <returns></returns>
        public Users Post([FromBody] Users entity)
        {
            _userList.Add(entity);
            return entity;
        }

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="id">主键</param>
        /// <param name="form">表单对象,它是唯一的</param>
        /// <returns></returns>
        public Users Put(int id, [FromBody]Users entity)
        {
            var user = _userList.FirstOrDefault(i => i.UserID == id);
            if (user != null)
            {
                user.UserName = entity.UserName;
                user.UserEmail = entity.UserEmail;
            }
            return user;
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns></returns>
        public void Delete(int id)
        {
         _userList.Remove(_userList.FirstOrDefault(i=>i.UserID==id));
        }
    }

下面我们看一下各个操作调用的结果:

添加操作(POST)

更新操作(PUT)

最后,再强调一下,web api使用RESTful架构的,不像传统的(同是SOAP的) RPC方式的wcf和web Service,它强调的是接口模块的概念,每个模块都是独立的,每个模块的接口方法都是统一的和单一的,即CRUD方法组成。

时间: 2024-10-19 08:58:10

WebApi系列~基于RESTful标准的Web Api的相关文章

基于RESTful标准的Web Api

微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下: GET:生到数据列表(默认),或者得到一条实体数据 POST:添加服务端添加一条记录,记录实

WebApi系列~通过HttpClient来调用Web Api接口~续~实体参数的传递

上一讲中介绍了使用HttpClient如何去调用一个标准的Web Api接口,并且我们知道了Post,Put方法只能有一个FromBody参数,再有多个参数时,上讲提到,需要将它封装成一个对象进行传递,而这讲主要围绕这个话题来说,接口层添加一个新类User_Info,用来进行数据传递,而客户端使用网页ajax和控制台HttpClient的方式分别进行实现,Follow me! 下面定义一个复杂类型对象 public class User_Info { public int Id { get; s

WebApi系列~通过HttpClient来调用Web Api接口

HttpClient是一个被封装好的类,主要用于Http的通讯,它在.net,java,oc中都有被实现,当然,我只会.net,所以,只讲.net中的HttpClient去调用Web Api的方法,基于api项目的特殊性,它需要有一个完全安全的环境,所以,你的api控制器看起来有点特别,只有5个方法,而且都是标准的http方法,我觉得这种设计很不错,很清晰,而且为了实现安全性,它不支持使用传统的表单数据,取而代之的是FromBody参数,它指拿HttpRequestMessage里参数,而不是所

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【八】——Web Api的安全性

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 这一篇文章我们主要来探讨一下Web Api的安全性,到目前为止所有的请求都是走的Http协议(http://),因此客户端与服务器之间的

Web Api 系列(一) 初识 web api

HTTP 不仅仅服务于web 页面,而且它也是一个强大的平台 它对于构建提供开放服务和数据的api 来说.HTTP是简单的,灵活的,无处不在的.几乎所有的平台都存在它的身影.HTTP服务可以贯穿于几乎所有的客户端.包括浏览器,移动设备和传统的桌面程序. ASP.NET Web API 是基于.net Framework 用来构建Web 接口的框架.接下来使用asp.net  web api 构建web 接口来返回产品列表. 演示案例需要的软件版本:vs 2013, web api 2. 一 创建

WEB API系列(一):WEB API的适用场景、第一个实例

在我前一篇博客中已经给各位简单介绍了HTTP协议与RestFul API的关系,以及一些基本的HTTP协议知识,在这些知识的铺垫下,今天,我们一起来讨论一下WEB API的适用场景,然后写我们第一个WEB API接口,并演示如何对其进行简单调用. 很多人都很迷惑,既然有了WCF为什么还要有WEB API?WEB API会不会取代WCF? 就我的看法,WCF提供的是一种RPC实现的集合,WCF的设计更多地考虑了SOA的场景,以及各种RPC的问题.很多人也会说,RestFul API也是一种RPC啊

使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo

在上一篇里,我已经建立了一个简单的Web-Demo应用程序.这一篇将记录将此Demo程序改造成一个Web Api应用程序. 一.添加ASP.NET Core MVC包 1. 在project.json文件添加Microsoft.AspNetCore.Mvc包 1 { 2 "version": "1.0.0-*", 3 "buildOptions": { 4 "debugType": "portable",

【Web API系列教程】1.2 — Web API 2中的Action Results

前言 本节的主题是ASP.NET Web API如何将控制器动作的返回值转换成HTTP的响应消息. Web API控制器动作可以返回下列的任何值: 1, void 2, HttpResponseMessage 3, IHttpActionResult 4, Some other type 取决于返回的以上哪一种,Web API使用不同的机制来创建HTTP响应. Return type How Web API creates the response void Return empty 204 (

WebApi系列~基于单请求封装多请求的设计

怎么说,单请求封装多请求,这句话确实有点绕了,但还是要看清楚,想明白这到底是怎么一回事,单请求即一次请求(get,post,put,delete),封闭多请求,即在客户端发送的一个请求中可能包含多个子请求(真实的请求,接口),这种设计确实看着很灵活,客户端可以根据自己的需要去拿服务器的数据,确实不错! 首先我们要定义一套自己的请求和响应对象 #region 请求对象 /// <summary> /// 参数对象 /// </summary> [DataContractAttribu