在 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 雲端上
- 滑鼠右擊
XamarinAzureDayService
,選擇發行
- 在對話窗中,點選
發行
按鈕 - 您可以使用 PostMan 來檢查本地端執行與運作結果是否正常
PostMan 測試資料
本地端
Azure
Header 資訊
Key : ZUMO-API-VERSION
Value : 2.0.0
這個練習範例專案,請參考
XamarinAzureService_Custom