天天看點

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

1:ASP.NET MVC5+EF6+EasyUI 背景管理系統(1)-WebApi與Unity注入 使用Unity是為了使用我們背景的BLL和DAL層

2:ASP.NET MVC5+EF6+EasyUI 背景管理系統(2)-WebApi與Unity注入-配置檔案

3:ASP.NET MVC5+EF6+EasyUI 背景管理系統(3)-MVC WebApi 使用者驗證 (1)

4:ASP.NET MVC5+EF6+EasyUI 背景管理系統(4)-MVC WebApi 使用者驗證 (2)

以往我們講了WebApi的基礎驗證,但是有新手經常來問我使用的方式

這次我們來分析一下代碼的用法,以及調試的方式

WebApi在一些場景我們會用到,比如:

  • 1.對接各種用戶端(移動裝置)
  • 2.建構常見的http微服務 
  • 3.開放資料 
  • 4.單點登陸  等...

本文主要示範幾點:主要也是對以往的回顧整理

  • 1.使用HelpPage文檔
  • 2.Postman對接口進行調試(之前的樣例太過簡單,這次加一些參數,讓初學者多看到這些場景)
  • 3.調試接口

1.HelpPage Api幫助文檔

我們建立的WebApi內建了微軟自帶的HelpPage,即Api的文檔,在我們編寫好接口之後會自動生成一份文檔

配置HelpPage,非常簡單,分兩步

設定項目屬性的輸出XML文檔

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

2.打開Areas-->HelpPage-->App_Start-->HelpPageConfig.cs

public static void Register(HttpConfiguration config)
        {
            //// Uncomment the following to use the documentation from XML documentation file.
            config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/bin/Apps.WebApi.XML")));      

設定Register方法就行,運作位址localhost:1593/help得到如下結果

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

從圖中可以看出,每一個控制器的接口都會列出來,并根據注釋和參數生成文檔,全自動

點選接口可以看到參數和請求方式

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

2.使用Postman調試

下載下傳位址:https://www.getpostman.com/

Pastman非常易用,我們下面就拿登陸接口來測試

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

打開Postman,建立一個請求

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

OK,我們已經獲得token!注意,建立請求的時候,要設定GET,POST

3.驗證權限

之前的文章,我們是通過令牌的方式+接口權限來通路接口資料的

打開SupperFilter.cs過濾器代碼

//url擷取token
            var content = actionContext.Request.Properties[ConfigPara.MS_HttpContext] as HttpContextBase;

            var token = content.Request.QueryString[ConfigPara.Token];
            if (!string.IsNullOrEmpty(token))
            {
                //解密使用者ticket,并校驗使用者名密碼是否比對

                //讀取請求上下文中的Controller,Action,Id
                var routes = new RouteCollection();
                RouteConfig.RegisterRoutes(routes);
                RouteData routeData = routes.GetRouteData(content);
                //取出區域的控制器Action,id
                string controller = actionContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                string action = actionContext.ActionDescriptor.ActionName;
                //URL路徑
                string filePath = HttpContext.Current.Request.FilePath;
                //判斷token是否有效
                if (!LoginUserManage.ValidateTicket(token))
                {
                    HandleUnauthorizedRequest(actionContext);
                }

                //判斷是否角色組授權(如果不需要使用角色組授權可以注釋掉這個方法,這樣就是登入使用者都可以通路所有接口)
                if (!ValiddatePermission(token, controller, action, filePath))
                {
                    HandleUnauthorizedRequest(actionContext);
                }

                //已經登入,有權限
                base.IsAuthorized(actionContext);      

過濾器中會讀取到使用者傳過來的token并進行2個邏輯驗證

1.驗證token是否有效

2.驗證接口有沒有權限(通過背景配置設定權限來擷取Action)這個操作跟我們授權界面是一樣的 

(注:如果注釋掉即所有登陸使用者都可以通路所有接口,不受控制,主要看業務場景吧)

4.通過Token向其他接口拿資料

看到SysSampleController類,這個類和普通MVC裡面的樣例的接口其實沒有什麼差別,BLL後的所有都是通用的,是以邏輯就不需要重新寫了!按照第二點的獲得token,配置到Postman可以獲得資料

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

1.查詢

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

2.建立

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

3.修改

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

4.擷取明細

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試

5.删除

ASP.NET MVC5+EF6+EasyUI 背景管理系統-WebApi的用法與調試
 謝謝,從源碼直接可以看出,和自己測試或者自己配置一遍,不失是一種體驗

作者:YmNets

出處:http://ymnets.cnblogs.com/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。