码迷,mamicode.com
首页 > Windows程序 > 详细

ASP.NET Web API 学习 一

时间:2015-07-01 20:24:04      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

Technorati 标记:

 

从参加工作开始就开始关注博客园,在园子里学到很多知识,看过很大大牛的文章,确从未发表过一个字。最近刚刚换了公司,学习Web API,就此开始我的第一篇文章吧,也作为学习的记录!

简介就不多介绍,说说我对ASP.NET Web API 的一点点理解。

不同于 Web Service、WCF, ASP.NET Web API 直接访问和处理 Http 请求和响应,在开发中,减少了很多工作,让人感觉一切是如此顺畅。

首先,创建一个 ASP.NET MVC 4 Web Application

技术分享

选择 Web API

技术分享

创建成功后,会默认生成一个示例。

public class ValuesController : ApiController
{
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post([FromBody]string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
}

我这里是偷了个懒,直接使用了 NorthWind 数据库,从网上下载一个 NorthWind 数据库还原到本地的 SQL Server 中,然后新建一个 ADO.NET Entity Data Model

技术分享

选择 Generate from database,Next

技术分享

点击 New Connection

技术分享

选择本地数据库,输入用户名密码,选中 NORTHWIND,测试连接成功,OK

技术分享

选择Yes (会生成一个App.Config文件,成功之后,要把里面 NORTHWINDEntities 的 connectionStrings 拷到 Web 项目的 WebConfig 中),点击 Next

技术分享

选中Tables,Finish

技术分享

 

在 Models中 Add 一个新的 Class, Employee

技术分享

从 edmx 文件的 Employee类里,把属性拷出来

技术分享

public class Employee
{
        public int EmployeeID { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string Title { get; set; }
        public string TitleOfCourtesy { get; set; }
        public Nullable<System.DateTime> BirthDate { get; set; }
        public Nullable<System.DateTime> HireDate { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string HomePhone { get; set; }
        public string Extension { get; set; }
        public byte[] Photo { get; set; }
        public string Notes { get; set; }
        public Nullable<int> ReportsTo { get; set; }
        public string PhotoPath { get; set; }
}

我使用了AutoMapper 将 DTO 转化为 Model,如果没有的可以使用 NuGet 下载一个

使用方法参考:https://github.com/AutoMapper/AutoMapper/wiki

技术分享

之后打开 Global.asax.cs,添加 Mapper 方法,这样在 Controller 中,就可以直接转化了。

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
        
    Mapper();
}

private void Mapper()
{
    //model to dto
    AutoMapper.Mapper.CreateMap<DX.MVCWebAPI.Models.Employee, DX.DataAccess.Employee>();

    //dto to model
    AutoMapper.Mapper.CreateMap<DX.DataAccess.Employee, DX.MVCWebAPI.Models.Employee>();
}

保存好之后,创建一个 Controller,EmployeesController

技术分享

添加下面的方法,AutoMapper 可以直接将 DTO 的集合换位 Model 的集合

public IEnumerable<Models.Employee> GetAllEmployees()
{
    var list = new List<Models.Employee>();
    using (var context = new NORTHWNDEntities())
    {
        list = AutoMapper.Mapper.Map<System.Data.Entity.DbSet<DataAccess.Employee>, List<Models.Employee>>(context.Employees);
    }
    return list.ToArray();
}

最后在Views/Home 里增加一个新的View, Employee,记得在HomeController 里增加Action

技术分享

Employee View 页面代码

<div id="body">
    <input type="button" id="getAll" value="GetAll" />
    <div id="employeeAll">
    </div>
    <script src="~/Scripts/jquery-1.8.2.min.js"></script>
    <script type="text/ecmascript">
        $().ready(function () {
            $("#getAll").click(function () {
                $.getJSON("/api/v1/Employees")
                    .done(function (data) {
                        var html = "<ul>";
                        $(data).each(function (i, item) {
                            html += "<li>" + item.EmployeeID + " | " + item.LastName + " " + item.FirstName + " | " + item.Title + "</li>";
                        });
                        html += "</ul>";
                        $("#employeeAll").html(html);
                    });
            });
        });
    </script>
</div>

执行程序,点击 GetAll,大功告成。

技术分享

 

有不对的地方,欢迎大家指出。

 

作为一名苦逼的程序猿,谨以此记录成长路上的点点滴滴。

ASP.NET Web API 学习 一

标签:

原文地址:http://www.cnblogs.com/daxiong105/p/4614291.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!