1

原文地址

cURL为何物?

cURL是一款流行的标准化工具,用来在命令行上执行HTTP请求。在多数系统中被默认安装。对于web开发者而言有效地使用cURL是一项重要的技能。Curl常被视为调试与自动化HTTP请求的首选。

你需要先理解HTTP协议才能很好地使用curl。如果你对此并不熟悉,可以阅读HTTP与REST新手指南HTTPWatch的HTTP指南

GET请求

如果你的系统中已经安装了curl,你可以发起一个最基础的请求:

curl http://google.com

POST请求

如果你想使用cURL来模拟form的提交,你可以使用POST请求:
你可以向 GraphQL hub发起一个POST请求。

curl -H 'Content-Type:application/graphql' -XPOST https://www.graphqlhub.com/graphql?pretty=true -d '{ hn { topStories(limit: 2) { title url } } }'

注意这里有三个可选参数:

  • -H - 用于需要传入HTTP头(header)的情形。在本例中将传入'Content-Type'为'application/graphql'的HTTP头。

  • -XPOST - 用于需要POST请求的情形。

  • -d - 用于其后的字符串是POST body的情形。在本例中,使用GraphGL查询从Hacker News取回了前两位的提交。

谷歌浏览器 "Copy as cURL"功能

谷歌浏览器有一个逆天的功能,可以将任意的HTTP操作复制为cURL请求

图片描述

  1. 打开谷歌浏览器开发者工具

  2. 点击'Network'切换按钮

  3. 选择一项你需要复制的网络请求

  4. 右键并选择"Copy as cURL"(我的版本是在"Copy"下有个二级菜单)

  5. 粘贴到"shell"

当你粘贴到shell中时你会发现很冗长,这是因为浏览器发送了巨多HTTP头信息。虽然他们并会都对请求是否会成功其作用,但这是一个好的开始。当你需要验证浏览器cookie或是调试一个受保护的请求时,该方法对你有很大帮助。

curl 'https://www.fullstackreact.com/assets/vendor/functions.js' -H 'if-none-match: W/"5dd95509e78d11579fc427e9f41889d6"' -H 'accept-encoding: gzip, deflate, sdch' -H 'accept-language: en-US,en;q=0.8' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36' -H 'accept: */*' -H 'cache-control: max-age=0' -H 'authority: www.fullstackreact.com' -H 'cookie: __cfduid=d309889bd8e027d878c2e16e0176e764d1463427161; _ga=GA1.2.135748265.1463427163; _gat=1' -H 'if-modified-since: Tue, 15 Mar 2016 03:37:56 GMT' -H 'referer: https://www.fullstackreact.com/' --compressed

虽然在功能上并非完全一致,但是简化后的请求可以是这样的:

curl 'https://www.fullstackreact.com/assets/vendor/functions.js'

拓展阅读

如果想知道更多有关cURL的只是可以参考:


这是上帝的杰作
2.2k 声望164 粉丝

//loading...