http状态码实验
本篇文章的测试GitHub接口部分结合上面的资料展开,在CentOs 5.7 64位的机子上演示。后面的例子由于笔者暂时找不到好的网站地址,只好自己搭建网站了。然后使用api post 去调用接口。后面部分主要根据笔者的日常使用经验。
2XX
curl -s -i https://api.github.com | grep status
-i 表示 输出时包括protocol头信息
-s 表示 静默模式
grep status 用于查找文件里符合条件的字符串
这里是Linux的管道用法,可以用来过滤
200
我们也可以看得详细一点
200
4XX
curl -i -u iZwz99inw692vbuwtngjf9Z -X POST https://api.github.com/gists
-u 指定用户名
-X 制定请求方式
这里返回401代表当前用户没有访问权限~~~
404也很常见.
404
403:
这里给大家推荐一个免费软件APIpost,这里笔者没收它的广告费哦,完全是觉得它好用。
然后访问的是笔者的gitee私有仓库,很明显就是403错误了。
对资源的访问遭到gitee服务器的拒绝。
3XX
这个例子使用nodejs的一个框架Express 来搭建.
//nodejs代码
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(301, {'Location': 'http://baidu.com/'});
console.log(res._header);
res.end();
});
server.listen(8080);
console.log("server start at http://127.0.0.1:8080");
301
//nodejs代码
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(302, {'Location': 'http://baidu.com/'});
console.log(res._header);
res.end();
});
server.listen(8080);
302
304:告诉客户端,所请求的内容距离上次访问并没有变化. 客户端可以直接从浏览器缓存里获取该资源.
在第一次请求服务器的时候在获取资源之后是会先把该资源缓存在本地的,同时服务器response返回了一个响应头ETag,ETag全称Entity Tag,用来标识一个资源。在具体的实现中,ETag可以是资源的hash值,也可以是一个内部维护的版本号。
要想不是304,可以禁用浏览器缓存.
200
5XX
500的错误十分常见,比如程序员一不小心就写就给用户留下浓墨重彩的一笔—— "服务器内部错误"!
这里我故意来一把运行时错误.
divided by zero 500
几个小工具
-
ApiPost.刚刚试验403的时候尝试了,就不再介绍了。
ApiPost -
JetBrains的Http client.
这个呢,不同的版本位置不一样。
比如2020版的IDEA和Pycharm就在Tools -> HTTP Client -> Test RESTful web Service.其他的笔者没尝试,不过位置差不多,找一下即可.
REST Client -
vscode 安装一个插件REST Client.
REST Client
REST Client用法
关于REST Client插件的详细用法,可以看它扩展的细节说明
Usage