XAML in Xamarin.Forms 基礎篇 電子書

特別說明

2017/04/17

Xamarin.Forms 與 Azure Mobile App Lab 9

在 Azure 行動應用後端專案,新增需要身分認證的才能夠存取的資料表

請接續進行 Azure行動應用服務的後端專案

建立資料傳輸物件 (DTO) 類別

接下來,我們需要修改這個後端 API 專案,讓這個專案可以提供更多的功能。
  • 為了要開始產生一個我們自訂的資料表,我們需要定義資料表控制器, 設定資料表控制器需要三個步驟︰
這裡,我們需要定義一個請假紀錄的申請紀錄表單,用來定義 SQL Database 內的資料表。
  • 請滑鼠右擊 DataObjects 資料夾,選擇 加入 > 類別
  • 在對話窗下方的 名稱 輸入 WorkLog
  • 點選 新增 按鈕
  • 請將剛剛產生的類別 WorkLog,修改成為如下程式碼:
    public class WorkLog : EntityData
    {
        public string 專案名稱 { get; set; }
        public DateTime 日期 { get; set; }
        public double 處理時間 { get; set; }
        public string 工作內容 { get; set; }
    }
若有找不到的類別或者命名空間,請點選燈泡來修正

建立資料表控制器。

如果已安裝 Azure SDK,您現在可以建立範本資料表控制器,請進行底下操作

使用 Azure 行動應用程式資料表控制器

  • 滑鼠右擊 Controller 資料夾,選擇 加入 > 控制器
  • 在對話窗中,選擇 Azure 行動應用程式資料表控制器
  • 點選新增按鈕
  • 在出現 新增控制器 對話窗,請輸入或者選擇如下圖結果
    模型類別:您剛剛定義的 SQL 資料表型別,可用下拉選單來選擇
    資料內容類別:,也就是這個專案內繼承 DbContext 的類別,可用下拉選單來選擇
    控制器名稱:可以使用自動產生的名稱,注意,最後面一定要有 Controller
  • 點選 新增 按鈕,完成這個資料表控制器產生動作。
  • 底下為產生後的 WorkLogController 資料控制器程式碼
    您可以看到,對於工作日報資料表的基本 CRUD API 程式碼,都已經幫您自動產生好了
    這裡請特別注意,在使用 Azure Mobile App 的資料表控制項類別中,必須要繼承 TableController 這個類別,而不是要使用 ApiController 類別
  • 請注意,在這裡我們需要在類別前,加入 [Authorize] 宣告,表示要使用這個資料表,必須要通過使用這身分驗證,也就是不允許匿名存取。
    [Authorize]
    public class WorkLogController : TableController<WorkLog>
    {
        protected override void Initialize(HttpControllerContext controllerContext)
        {
            base.Initialize(controllerContext);
            XamarinAzureDayContext context = new XamarinAzureDayContext();
            DomainManager = new EntityDomainManager<WorkLog>(context, Request);
        }

        // GET tables/WorkLog
        public IQueryable<WorkLog> GetAllWorkLog()
        {
            return Query(); 
        }

        // GET tables/WorkLog/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public SingleResult<WorkLog> GetWorkLog(string id)
        {
            return Lookup(id);
        }

        // PATCH tables/WorkLog/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task<WorkLog> PatchWorkLog(string id, Delta<WorkLog> patch)
        {
             return UpdateAsync(id, patch);
        }

        // POST tables/WorkLog
        public async Task<IHttpActionResult> PostWorkLog(WorkLog item)
        {
            WorkLog current = await InsertAsync(item);
            return CreatedAtRoute("Tables", new { id = current.Id }, current);
        }

        // DELETE tables/WorkLog/48D68C86-6EA6-4C25-AA33-223FC9A27959
        public Task DeleteWorkLog(string id)
        {
             return DeleteAsync(id);
        }
    }

加入 Migration

  • 點選功能表 工具 > NuGet封裝管理員 > 套件管理員主控台
  • 在 套件管理員主控台 中輸入底下指令
Add-Migration WorkLog
  • 按下 F5 ,在本地端執行這個專案
    您可以使用 PostMan 來檢查本地端執行與運作結果是否正常
  • 中斷除錯執行
    由於這組資料表的存取行為,需要使用者先成功登入到系統上,因此,您在 PostMan 上會得到底下訊息
{
  "message": "Authorization has been denied for this request."
}

發佈到 Azure 雲端上

PostMan 測試資料

本地端

Azure

Header 資訊

Key : ZUMO-API-VERSION
+

Value : 2.0.0

這個練習範例專案,請參考

XamarinAzureService_Custom

沒有留言:

張貼留言