Asp.Net WebApi学习教程之增删改查

webapi简介

在asp.net中,创建一个HTTP服务,有很多方案,以前用ashx,一般处理程序(HttpHandler),现在可以用webapi

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

GET:获取

POST:添加

PUT:修改

DELETE:删除

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

WebAPI是根据请求头信息(Accept Header)来查找已经格式化注册的响应头信息(Content-Type)来确定它应该返回的输出类型json/xml,浏览器访问基本都是xml,如果只需要json的话可以通过Global.asax设置

protectedvoidApplication_Start(object sender, EventArgs e)

      {//默认JSON          GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

      }

webapi示例(CRUD)

环境:vs2015、iis7、webapi2.0、.net4.5.2

功能:webapi+ajax实现增删改查模型

namespace cms.Model

{public partial class student

    {

        public int ID { get; set; }

        public string name { get; set; }

        public int sex { get; set; }

        public int age { get; set; }

        public System.DateTime timesAdd { get; set; }

    }

}

修改webapi路由

webapi默认路由api/{controller}/{id},如果不喜欢可以修改为api/{controller}/{action}/{id},下边是修改后的代码

public static void Register(HttpConfiguration config)

        {

            config.Routes.MapHttpRoute(

                name: "DefaultApi",

                routeTemplate: "api/{controller}/{action}/{id}",

                defaults: new { id = RouteParameter.Optional }

            );

        }

Controller代码

using System;

using System.Collections.Generic;

using System.Net;

using System.Web.Http;

using cms.BLL;

using cms.Model;

namespace cms.Web.API

{

    public class StudentController : ApiController

    {

        public studentBLL bll = new studentBLL();

        // GET: /api/student/GetList

        public IEnumerable GetList()

        {

            var list = bll.FindList();

            return list;

        }

        // GET: api/Student/Get/5

        public student Get(int id)

        {

            var model = bll.Find(id);

            if (model == null)

            {

                throw new HttpResponseException(HttpStatusCode.NotFound);

            }

            return model;

        }

        //添加方法1:如果要添加的字段和模型刚好匹配就用这个

        // POST: api/Student/Post

        public student Post([FromBody]student entity)

        {

            entity.timesAdd = DateTime.Now;

            return bll.Add(entity);

            //dynamic data = new { name = _name, age = _age };

            //return Json(data);

        }

        //添加方法2:如果要添加的字段和模型不匹配就用这个

        // POST: api/Student/PostAdd

        //注意:webapi post接受数据dynamic,ajax调用时也得把json格式化为字符串才行

        public student PostAdd(dynamic obj)

        {

            student model = new student();

            model.name = obj.name;

            model.sex = obj.sex;

            model.age = obj.age;

            model.timesAdd = DateTime.Now;

            return bll.Add(model);

        }

        // PUT: api/Student/Put/5

        public void Put(int id, [FromBody]student entity)

        {

            student model = bll.Find(id);

            model.name = entity.name;

            model.sex = entity.sex;

            model.age = entity.age;

            if (!bll.Update(model))

            {

                throw new HttpResponseException(HttpStatusCode.NotFound);

            }

        }

        // DELETE: api/Student/Delete/5

        public void Delete(int id)

        {

            if (!bll.Delete(id))

            {

                throw new HttpResponseException(HttpStatusCode.NotFound);

            }

        }

    }

}

html代码

   

    webapi教程

   

   

   

webapi create

   

       

       

姓名:

       

性别:

       

年龄:

       

           

       

   

   

webapi list

   

   

       

       

   

   

   


常见问题:

如果在做修改和删除操作时报405错误(webapi delete Method Not Allowed),说明是iis把put和delete请求禁止了,需要在web.config中设置一下就ok了

   

     

   

   

     

   

 

你可能感兴趣的:(Asp.Net WebApi学习教程之增删改查)