当前位置: 首页 > Linux

curl命令与HTTP请求

时间:2023-04-06 07:02:32 Linux

curl介绍curl是一个运行在命令行上的http客户端。使用curl命令发起http请求并返回结果。相信很多开发者都喜欢使用图形界面工具(比如Postman)来进行API调试。但是我觉得了解curl命令行工具会给开发带来很大的帮助,可以让开发者更直观的理解http请求,也方便了开发过程中的沟通和交流。curl使用注意事项:windows系统没有curl命令。如果你想在Windows中使用它,你可以使用GitBash或Cygwin。curl[options][URL...]先尝试请求百度首页和一言API,不加任何参数。curlhttps://www.baidu.comcurlhttps://v1.hitokoto.cn/可以看到返回的信息是一串文本(string)。当请求内容为html(百度首页)时,返回html文本;当请求内容为JSONAPI(一研API)时,返回JSON文本。在浏览器中,浏览器根据文本内容渲染页面。使用不带任何参数的curl命令只是返回http的响应文本内容(后面会提到),如果想查看完整的http请求信息,可以加上-v参数。curl-vhttps://v1.hitokoto.cn/此时会打印出http请求的完整信息,分别是http的请求报文和响应报文。HTTP请求HTTP请求可以看作是向服务器发送一个字符串的过程,服务器收到后返回该字符串。发送给服务器的字符串称为请求消息,服务器返回的字符串称为响应消息。请求消息一个HTTP请求消息由四部分组成:请求行、请求头、空行和请求数据。请求行请求行由请求方法、URL和HTTP协议版本组成。例如,GET/index.htmlHTTP/1.1。HTTP请求方法包括GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE和CONNECT。请求头请求头由键/值对组成,每行一对,键和值之间用冒号分隔。常见的请求标头有:User-Agent:生成请求的浏览器类型。接受:客户端识别的内容类型列表。主机:请求的主机名。空行最后一个请求头之后是一个空行,发送回车换行通知服务器下面没有请求头了。请求数据请求数据不是用在GET方法中,而是用在POST方法中。响应消息响应消息由3部分组成:状态行、响应头和响应文本。状态行返回一个HTTP状态代码来描述所请求的资源。常见的状态码有200OK(请求成功)、403Forbidden(服务器收到请求但拒绝提供服务)、404NotFound(请求的资源不存在)。响应头与请求头相同,由键/值对组成,每行一对,键和值之间用冒号分隔。ResponseText响应的文本内容,即上面提到的curl命令不加-v参数时返回的内容。在上面的例子中,它们的具体位置如下>GET/HTTP/1.1(请求行)>Host:v1.hitokoto.cn(请求头)>User-Agent:curl/7.64.0(请求头)>Accept:*/*(请求头)>(空行)//设置请求方法-H

//设置请求头-D<data>//设置请求数据(POST方式)例子:curl'https://v1.hitokoto.cn/'-H'User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.100Safari/537.36'-H'Cookie:_ga=GA1.2.303411826.1562744042'-D'c=b'以上示例表示对https://v1.hitokoto的POST请求.cn/,由于加了-D参数,-XPOST参数可以省略。添加了两个请求头,分别是User-Agent和Cookie,并添加了一个请求数据。如果c=b,如果有多个请求数据,用&连接。此外,在现代浏览器的开发人员工具中,有一个方便的功能可以复制请求的curl命令。复制结果:curl'https://v1.hitokoto.cn/'-H'Connection:keep-alive'-H'Cache-Control:max-age=0'-H'Upgrade-Insecure-Requests:1'-H'User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.100Safari/537.36'-H'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3'-H'Accept-Encoding:gzip,deflate,br'-H'Accept-Language:zh-CN,zh;q=0.9'-H'Cookie:_ga=GA1.2.303411826.1562744042'--compressed当调试api接口出现问题时,我们可以直接发送这条命令到对于其他开发者来说,粘贴到终端运行一下就可以知道问题所在,可以说是相当方便了。参考资料一个完整的HTTP请求所经历的7个步骤

最新推荐
猜你喜欢