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协议跟踪工具

  • IE/Chrome/FireFox等浏览器开发人员工具-网络工具
    (注:IE推荐使用10+,Chrome调试界面为英文)
  • Fildder(http://www.telerik.com/fiddler)
    WebAPI接口调试技巧_第1张图片
  • PostMan(Chrome插件) (https://www.getpostman.com/)

6.科学的剖析接口调用情况

  • 当访问接口不成功,且初步排查没发现问题时,就应该先从HTTP请求入手,而不是耗费太多时间纠结在代码上。
  1. 打开调试工具,重复请求过程(刷新页面或重新点击提交按钮)
  2. 通过调试工具,查看是否存在对应的请求
  3. 如果不存在请求,现判断调用代码是否出现异常,有没有发出请求?
  4. 请求存在,判断请求状态码,顺藤摸瓜的分析原因。
    例如最常见错误,假如HTTP状态码为404,就可以通过判断IP、端口号,请求方式、URL字符串来确定是否是代码问题还是部署问题。
  5. 请求后得到状态码为200,那么再仔细研究下接口的传入数据和传出数据。
    ###7.使用Fiddler工具分析传入数据与返回数据
    ####使用Fiddler工具
  6. 打开Fiddler
  7. 利用浏览器访问对应的页面
  8. 在Fiddler左侧请求列表中,找对刚才的页面
  9. 点击选中,在Fiddler右侧查看详细数据。WebAPI接口调试技巧_第2张图片

WebAPI接口调试技巧_第3张图片

WebAPI接口调试技巧_第4张图片
####利用Fiddler右侧Composer模拟请求

  1. 选择请求方式Get或者Post
  2. 输入URL
  3. 如果有参数,在Request Body中输入
  4. 点击Excute,发送请求
  5. 在右侧Log Requests中选择刚执行的请求
    WebAPI接口调试技巧_第5张图片

8.常见问题的解决

####跨域问题

  • 当我们跟踪到带有关键字“Access-Control-Allow-Origin ”的错误时,说明我们遇到了跨域问题!如图:
    WebAPI接口调试技巧_第6张图片
    跨域问题的根本来自于浏览器的一个安全策略:同源策略
    所谓“同源”指的是“三个相同”:协议相同、域名相同、端口相同(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中,为每个返回头加入“源信息”


####常见的403错误

  • .Net模式的WebAPI的403错误,是一个典型的Web应用程序问题。
  • 现象:IP、端口完全正常,同台服务器部署的其他Web程序能正常访问,本接口在其他服务器上也能正常开放!根据状态码提示:该接口的应用程序本身存在问题。
    WebAPI接口调试技巧_第7张图片
  • 一般经验:.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代码,而是后台代码。
  • 结论:检查配置的接口地址是否正确,或者接口服务器是否开启。

你可能感兴趣的:(.net技术类)