WebAPI接口調試技巧


1.了解WebAPI接口

  • 接口模式:基於MVC4.0的WebAPI
  • 承載協議:HTTP
  • 跟蹤工具:IE11
  • 請求方式:POST
  • 請求URL:IP:Port/Application/Controller/ActionName/Parameters
  • 請求參數:一串由JSON對象轉化而成的字符串
  • 響應狀態:200(OK)
  • 響應結果: 一串JSON格式的數據
  • 響應類型:application/json

2.WebAPI接口的URL規則

  • URL規則:IP:Port/Application/Controller/ActionName/Parameters
  • 示例:192.168.202.53/wszwdtapi_v6.6/taskkind/gettaskkindsbycodename
    IP:192.168.202.53,Port:80(默認)
    ApplicationName:wszwdtapi_v6.6
    Controller:taskkind
    ActionName:gettaskkindsbycodename
    Parameters:無

3.HTTP請求模式

  • 兩種最常用見的HTTP 請求方法:
    GET 和 POST
  • 標准版的利用方案:
    統一使用POST方式,為接口后台提供統一的參數處理規則。
  • 接口限制:接口會限制HTTP請求模式,如果限制了POST方式,則GET時會報404錯誤。
GET POST
從指定的資源請求數據 向指定的資源提交要被處理的數據
參數必須以鍵值對的形式包含在URL中 建議參數以JSON字符串存放在請求體中
請求體為空 利用請求體傳數據

4.HTTP狀態消息

  • 常見的狀態
常見狀態 注釋
200 OK 請求成功
304 Not Modified 未按預期修改文檔。
403 Forbidden 對被請求頁面的訪問被禁止。
404 Not Found 服務器無法找到被請求的頁面。
500 Internal Server Error 請求未完成。服務器遇到不可預知的情況。
501 Not Implemented 請求未完成。服務器不支持所請求的功能。
503 Service Unavailable 請求未完成。服務器臨時過載或當機。

更多狀態請點擊這里

5.常見的HTTP協議跟蹤工具

6.科學的剖析接口調用情況

  • 當訪問接口不成功,且初步排查沒發現問題時,就應該先從HTTP請求入手,而不是耗費太多時間糾結在代碼上。
  1. 打開調試工具,重復請求過程(刷新頁面或重新點擊提交按鈕)
  2. 通過調試工具,查看是否存在對應的請求
  3. 如果不存在請求,現判斷調用代碼是否出現異常,有沒有發出請求?
  4. 請求存在,判斷請求狀態碼,順藤摸瓜的分析原因。
    例如最常見錯誤,假如HTTP狀態碼為404,就可以通過判斷IP、端口號,請求方式、URL字符串來確定是否是代碼問題還是部署問題。
  5. 請求后得到狀態碼為200,那么再仔細研究下接口的傳入數據和傳出數據。

7.使用Fiddler工具分析傳入數據與返回數據

使用Fiddler工具

  1. 打開Fiddler
  2. 利用瀏覽器訪問對應的頁面
  3. 在Fiddler左側請求列表中,找對剛才的頁面
  4. 點擊選中,在Fiddler右側查看詳細數據。請求正文

響應正文

這里寫圖片描述

利用Fiddler右側Composer模擬請求

  1. 選擇請求方式Get或者Post
  2. 輸入URL
  3. 如果有參數,在Request Body中輸入
  4. 點擊Excute,發送請求
  5. 在右側Log Requests中選擇剛執行的請求
    Composer模擬請求

8.常見問題的解決

跨域問題

  • 當我們跟蹤到帶有關鍵字“Access-Control-Allow-Origin ”的錯誤時,說明我們遇到了跨域問題!如圖:
    錯誤示例
    跨域問題的根本來自於瀏覽器的一個安全策略:同源策略
    所謂“同源”指的是“三個相同”:協議相同、域名相同、端口相同(IE瀏覽器下只需要滿足協議及域名相同)
    如果非同源,共有三種行為受到限制。
  1. Cookie、LocalStorage 和 IndexDB 無法讀取。
  2. DOM 無法獲得。
  3. AJAX 請求不能發送。
  • 目前有三種方法規避這個限制。1.JSONP,2.WebSocket,3.CORS
    標准版統一采用CORS方式來規避同源策略。
  1. .Net中,在需要訪問的接口的返回頭中,加入“源信息”
    代碼如下:HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*");
    或者在WebConfig中,為每個返回頭加入“源信息”
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" /></customHeaders>

常見的403錯誤

  • .Net模式的WebAPI的403錯誤,是一個典型的Web應用程序問題。
  • 現象:IP、端口完全正常,同台服務器部署的其他Web程序能正常訪問,本接口在其他服務器上也能正常開放!根據狀態碼提示:該接口的應用程序本身存在問題。
    錯誤詳情
  • 一般經驗:.Net的WebAPI接口,是基於.Net的MVC框架,老版本IIS未必支持MVC機制,導致HTTP請求無法成功識別。一般情況將程序進程配置為集成模式即可。也有可能是因為未將.Net Framework4.0注冊進IIS導致,通過命令注冊即可。
  • 具體參考:http://blog.csdn.net/lingxyd_0/article/details/43154867
  • Unable To connect the Romote Server(無法連接到遠程服務器)
  • 問題:Unable To connect the Romote Server(無法連接到遠程服務器)
  • 分析:這兩個問題,仍是接口不能訪問導致的。問題表現形式較以往很大不同,是因為訪問接口的不是JS代碼,而是后台代碼。
  • 結論:檢查配置的接口地址是否正確,或者接口服務器是否開啟。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM