C# MVC+EF—WebApi

上一篇搭建了页面,这里写下功能。

这里我用WebApi实现数据的增删改查。

一、新建Controller

为了区分明确,我在Controller文件夹下建立一个WebApi文件夹存放。

选中文件夹右键单击=》添加=》控制器=》Web Api控制器

1、这样会自动生成一个控制器,继承ApiController类

namespace mvc.Controllers.WebApi
{
    public class DepartmentController : ApiController
    {
        
    }
}
View Code

2、在App_Start文件夹下会自动生成WebApiConfig文件,这个文件的功能是定义WebApi的路由,WebApi路由是单独控制的

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
View Code

3、路由是可以自定义的,不一定要按照默认的规则,可以根据自己的需要调整路由规则。

为了区分更明确,我在默认路由的基础上增加一个action

 public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
View Code

二、为了使用方便新建一些辅助类

在models文件夹下,新增PageQuery文件夹存放

1、记录返回值

    public class APIResult
    {
        public APIResult()
        {
            message = "请求失败";
        }

        public bool success { get; set; }
        public string message { get; set; }
        public int code { get; set; }
        public object data { get; set; }
    }
View Code

2、查询基类

    public class QueryBase
    {
        public int page { get; set; }
        public int rows { get; set; }
    }
View Code

3、查询类,继承查询基类

    public class DepartmentQuery: QueryBase
    {
        /// <summary>
        /// 部门名称
        /// </summary>
        public string Name { get; set; }
    }
View Code

三、实现功能

  public class DepartmentController : ApiController
    {
        /// <summary>
        /// 查询部门信息
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        [HttpPost]

        public IHttpActionResult Pager(DepartmentQuery query)
        {
            List<Department> deplist = new List<Department>();
            int total = 0;
            using (var context = new DBContext.PracticeContext())
            {
                var querylist = context.Department.AsQueryable();
                if (!string.IsNullOrEmpty(query.Name))
                {
                    querylist = querylist.Where(s => s.Name.Contains(query.Name));
                }
                querylist = querylist.Where(s => s.IsDel == false);
                total = querylist.Count();
                var result = querylist.OrderByDescending(s => s.OrderId).Skip(query.rows * (query.page - 1)).Take(query.rows);
                deplist = result.ToList();
                return Ok(new APIResult()
                {
                    success = true,
                    message = "请求成功",
                    data = deplist
                });
            }
        }
        /// <summary>
        /// 新增部门信息
        /// </summary>
        /// <param name="dep">部门model</param>
        /// <returns></returns>
        [HttpPut]
        public IHttpActionResult Create(Department dep)
        {
            using (var context = new DBContext.PracticeContext())
            {
                Department department = new Department
                {
                    Name = dep.Name,
                    Introduce = dep.Introduce,
                    OrderId = dep.OrderId,
                    IsShow = dep.IsShow
                };
                context.Department.Add(department);
                context.SaveChanges();
                return Ok(new APIResult()
                {
                    success = true,
                    data = department,
                    message = "新增成功"
                });
            }
        }
        /// <summary>
        /// 修改部门信息
        /// </summary>
        /// <param name="dep">部门model</param>
        /// <returns></returns>
        [HttpPut]
        public IHttpActionResult Update(int id, Department dep)
        {
            using (var context = new DBContext.PracticeContext())
            {
                Department department = context.Department.Find(id);
                if (department != null)
                {
                    department.Name = dep.Name;
                    department.Introduce = dep.Introduce;
                    department.OrderId = dep.OrderId;
                    department.IsShow = dep.IsShow;
                }
                context.SaveChanges();
                return Ok(new APIResult()
                {
                    success = true,
                    data = department,
                    message = "更新成功"
                });
            }
        }
        /// <summary>
        /// 删除部门
        /// </summary>
        /// <param name="id">Id</param>
        /// <returns></returns>
        [HttpDelete]
        public IHttpActionResult Delete(int id)
        {
            using (var context = new DBContext.PracticeContext())
            {
                Department department = context.Department.Find(id);
                if (department != null)
                {
                    department.IsDel = true;
                }
                context.SaveChanges();

                return Ok(new APIResult()
                {
                    success = true,
                    message = "删除成功"
                });
            }
        }
    }
View Code

四、调用WebApi接口实现

猜你喜欢

转载自www.cnblogs.com/zhangjd/p/9383596.html