在前面文章中《API Testing 4 - Http方法-CRUD操作》有涉及几种简单的状态码,状态码对API 测试来说比较重要,在面试过程中也会经常被问到。
HTTP 状态码
当发起一个HTTP 请求时,服务端会返回响应,状态码就包含在响应中的状态行里。
HTTP/1.1 200 OK
响应消息中的第一行就是状态行,由协议+空格+数字状态码+空格+相关文字组成
状态码是由3位整型数字组成,相关的文字是为了简短地描述状态码。
HTTP 状态码分类:
HTTP 状态码以第一个数字区分分类:
1XX: 信息提示类,临时的响应,客户端在收到常规响应之前,应准备接收一个或多个1XX响应。表明请求被服务端成功收到,持续处理。
2XX:成功:这类状态代码表明服务器成功地接受了客户端请求。
3XX:重定向:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
4XX:客户端错误:发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息,或则请求的HEADER和Body不符合API接收的格式。
5XX:服务器端错误,服务器由于遇到错误而不能完成该请求。
详细的HTTP状态码:
务必牢记红色加粗
部分
100-继续。
101-切换协议。
200
-确定。客户端请求已成功。201
-已创建。202
-已接受,请求排队待处理或则需要长时间处理。该请求可能被操作,也可能不操作,甚至可能不允许处理。
203-非权威性信息。204
-响应成功,但是无内容,没有Resonse Body返回
205-重置内容。
206-部分内容。
301-对象已永久移走,即永久重定向。
302-对象已临时移动。
304-未修改。
307-临时重定向。
400
-错误的请求。用户提交不当的请求,如格式不正确,无效的请求参数,欺骗的请求路由等。响应中一定有WWW-Authenticate header 字段,包含对资源的认证信息.401-访问被拒绝
。当资源有授权保护,客户端提交一个错误授权(错误的用户名和密码)或则没有授权信息。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。403-禁止访问
:当用户想要访问一个没有权限访问的资源,会抛错误。注意跟401不同,该请求提供的用户认证是正确的,只是用户没有权限访问。IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
403.20-Passport登录失败。这个错误代码为IIS6.0所专用。404
-未找到,请求的资源在给定的URI上无效,或则找不到对应的资源。
404.0-(无)–没有找到文件或目录。
404.1-无法在所请求的端口*问Web站点。
404.2-Web服务扩展锁定策略阻止本请求。
404.3-MIME映射策略阻止本请求。405
-用来访问本页面的HTTP谓词不被允许(方法不被允许),例如:对一个原本GET的API发起一个POST请求,会抛异常,响应中的lAllow Header会列出该资源支持的方法列表。406
-客户端浏览器不接受所请求页面的MIME类型Accept header。例如,客户端请求服务端返回的数据格式是application/xml,而该API只返回application/json的数据格式,就会抛该异常。
407-要求进行代理身份验证。
408-request timeout
412-前提条件失败。
413–请求实体太大。
414-请求URI太长。415
–不支持的媒体类型Content-Type header。表明请求body的数据格式是不支持的。例如:客户端请求体中包含application/xml的数据格式,而该API只能处理application/json格式的数据。
416–所请求的范围无法满足。
417–执行失败。
422 (Unprocessable Entity) 数据格式对的,就是数据是不希望接受的,比如password设置成password。
423–锁定的错误。
500
-内部服务器错误。这是服务器端错误,当服务器处理请求时遇到一个异常。
500.12-应用程序正忙于在Web服务器上重新启动。
500.13-Web服务器太忙。
500.15-不允许直接请求Global.asa。
500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。
500.100-内部ASP错误。501
-页眉值指定了未实现的配置。当服务器没有识别请求的方法,或则没有能力实现该请求的处理。502
-Web服务器用作网关或代理服务器时收到了无效响应。 Bad Gateway
502.1-CGI应用程序超时。
502.2-CGI应用程序出错。application.503
-服务不可用。这个错误代码为IIS6.0所专用。service temporarily unavailable504
-网关超时。
505-HTTP版本不受支持。