1. 程式人生 > >用ASP.NET Web API技術開發HTTP接口(一)

用ASP.NET Web API技術開發HTTP接口(一)

ble 身份驗證 刪除 發現 bapi try prot 好用 get

開發工具

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接口進行實際運行。

用ASP.NET Web API技術開發HTTP接口(一)