1. 程式人生 > >用ASP.NET Web API技術開發HTTP介面

用ASP.NET Web API技術開發HTTP介面

開發工具

Visual Studio 2013

SQL Server 2008 R2

準備工作

啟動Visual Studio 2013,新建一個ASP.NET Web應用程式,命名為SimpleAPI。選擇Empty模板,並勾選“Web API”,無身份驗證,不新增單元測試。

準備用SQL Server資料庫來儲存資料,因此要安裝下Entity Framework框架,免去寫繁瑣SQL語句的麻煩。開啟工具-》程式包管理器控制檯輸入以下命令安裝。

Install-Package EntityFramework

在Web.config檔案裡配置資料庫連線程式碼,開啟這個檔案,在configuration節點內新增連線字串,其中星號部分換成SQLServer的資料庫名稱。

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=Localhost;Initial Catalog=******;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

建立資料模型

在Models目錄下新建一個名為Friend.cs的類檔案。

public class Friend 
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
    public string Notes { get; set; }  
}

同時建立資料庫的Context類檔案。

public class FriendContext : DbContext
{
    public FriendContext()
        : base("name=DefaultConnection")
    {
    }
    public DbSet<Friend> Friends { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

說明:

1、name=DefaultConnection要和Web.config中的資料庫連線字串中的name一致。

2、OnModelCreating過載函式的作用是讓建立的資料表名稱為單數格式,即為Friend,而不是Friends。

然後在程式包管理控制檯啟用Migrations,生成Migrations目錄,以及目錄中的Configuration.cs配置檔案。

Enable-Migrations

再依次執行下面2條命令,就可以把剛才建立的資料模型匯入到SQLServer中了,很方便。

Add-Migration xxx
Update-Database

其中xxx可任意填寫,VS會生成一個名為201508051223177_xxx.cs檔案,201508051223177是當前時間,檔案包含Up和Down兩個方法。現在我們再到SQLServer中重新整理下檢視,會發現一個名為Friend的資料表就建立好了。

下面利用Configuration.cs中的Seed函式新增一些測試資料,在Seed方法下新增以下模擬資料。

var friend = new Friend
{
    FirstName = "三",
    LastName = "張",
    Address = "南京西路",
    City = "上海",
    Country = "中國",
    PostalCode = "200041",
    Notes = "www.zhaomu.com"
};
context.Friends.Add(friend);
friend = new Friend
{
    FirstName = "四",
    LastName = "李",
    Address = "三里屯",
    City = "北京",
    Country = "中國",
    PostalCode = "100600",
    Notes = "www.sohu.com"
};
context.Friends.Add(friend);
friend = new Friend
{
    FirstName = "五",
    LastName = "王",
    Address = "花城大道",
    City = "廣州",
    Country = "中國",
    PostalCode = "510623",
    Notes = "www.163.com"
};
context.Friends.Add(friend);

然後執行Update-Database命令後,這些資料就成功匯入到SQL Server的資料表裡面了。

建立控制器

在Controllers目錄下新增控制器,選擇“Web API 2 控制器 - 空”,我們將手工編寫API程式的讀取、新增、修改、刪除各常用介面。控制器檔案命名為FriendController.cs。

讀取Get方法,在FriendController.cs中新增以下程式碼。

private FriendContext db = new FriendContext();

public IEnumerable<Friend> Get()
{
    return db.Friends.AsEnumerable();
}

編譯後,我們訪問 http://localhost:61570/api/friend(61570是隨機埠),如果一切正常的話會出現以下XML格式的資料,說明資料讀取成功。

轉換成json格式顯示

現在比較流行json格式的API介面資料,如果我們要讓資料以json格式顯示,需要修改App_Start目錄下的WebApiConfig.cs檔案,在//Web API 配置和服務的註釋下新增以下程式碼:

config.Formatters.Remove(config.Formatters.XmlFormatter);
var jsonFormatter = config.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

說明:第一行是去掉預設的XML格式,這樣輸出資料就會以json格式顯示,第三行是將輸出結果縮排顯示,第四行則是將欄位名稱改成camelCase格式,即postalCode這樣的json統一格式。然後我們再次執行,發現結果就是我們想要的了。

第二部分我們將繼續完成用ASP.NET Web API技術對資料進行新增、修改和刪除的操作,接著我們會使用一款很好用的介面測試工具Rest Client在瀏覽器上對剛剛開發好的API介面進行實際執行。