文章出處

       前兩周趕上項目第一個版本上線,著實忙了一把,畢竟只有兩個人負責。如今已完結,總算喘了一口氣,現在任務就是寫API、測API,許久之前寫過JS前臺調用 項目API,也寫過后臺調用開放的手機號歸屬地查詢,這些僅僅是自己閑暇之余寫的  最為簡單的例子,算是過家家的級別吧,現在就項目各模塊測試API時 注意的點和出現的問題進行記錄。

套路就是

1.新建一個API 項目,引用web項目的dll 

2.在API項目中 將要測試的方法全部寫好(new對象,然后引用dll中方法)

3.再新建一測試項目,根據url 拼接參數(API不認參數名和Action名,只識別參數個數)

比如: 測試 web項目中的 A方法時

①  API項目中

       //調用A方法
        public IList<Student> Get(string conn, string Id, string level)
        {
            StudentBIZ biz = new StudentBIZ(conn, Id,level);
            return biz.A();
        }

②APITest項目中

            string url = "API網址" + "A方法控制器名";
            string AllUrl = string.Format("{0}?conn={1}&Id={2}&level={3}", url, conn, Id, level);
            var b = WebRequestHelper.GetData<Student>(AllUrl);
            return View(b);

這里 WebRequestHelper 作為 APITest 調用WebAPI 方法的幫助類,針對需要的返回類型去編寫對應的訪問方法,一般都會有Post、Put、Get、Delete 等請求方式,網上也有很完善的Code,不想自己寫,可以直接貼過來自己用。不夠用的時候自己在寫對應的訪問方法,如:

        private static string PostWebApi(string url)
        {
            var request = HttpWebRequest.Create(url) as HttpWebRequest;                      
            request.Method = "Post";
            request.ContentType = "application/json; charset=utf-8";
            request.Timeout = 3000000;
            var app = request.Address.Segments[2];
            string result = "";
            request.ContentLength = 0;
            // 取得回應資料
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                {
                    result = sr.ReadToEnd();
                }
            }
            return result;
        }

紅色部分是獲取API項目中 對應方法的回調內容,如果你在API項目中對應的方法下打斷點,調試到這里的時候就會跳轉過去,有時候你想跑去DLL里面的方法中,只要將其web項目打開,不需要運行,直接在調的底層方法下打斷點,程序即可跑進去。比如①中的 biz.A() 方法。

      調試的時候有時候會拋出不少異常,最常見的就是 405方法不被允許;其實就是請求方式不對,put\post\get 等等的先屢清楚,然后就是發布服務器,很多時候,本地往往是正常的,一發布到服務器上就尷尬了,各種點擊沒有反應、或者404,一開始是比較頭疼,后來做多了好耐曉得了一些套路,或者說是需要注意的點

1. 404的錯誤,找不到是資源,就是路徑的問題,服務器上發布站點、應用程式的時候對路徑的要求也不一樣,在發布程式的時候,URL前面會帶有一個本地文件夾的名字,這里一定好區分好

2. 點擊按鈕無響應, 這個肯定是程序出了問題,平時在本地寫代碼的時候,就隨手返回一個bool值到前臺,然后彈出成功/失敗,但是部署到服務器上就不同了,一旦出了問題,也不能調試,只能靠猜。。。(笑),當然不是,主要方法下都會記錄日志,看日志找錯誤。此外,對于網頁的調試時,還可以新建一個實體類,寫上bool、string 兩個成員字段,返回前臺的時候,直接返回此對象,string記錄異常信息,正常則不記錄,前天在解析此對象,彈出操作結果(若失敗,則會提示失敗原因)

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()