ASP.NET Web API 學習 一

來源:互聯網
上載者:User

標籤:

Technorati 標記: ASP.NET Web API

 

從參加工作開始就開始關注部落格園,在園子裡學到很多知識,看過很大大牛的文章,確從未發表過一個字。最近剛剛換了公司,學習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 學習 一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.