ubuntu--curl
curl
uri和url
URI(Uniform Resource Identifier,统一资源标识符)和 URL(Uniform Resource Locator,统一资源定位符)是互联网中用于标识和定位资源的两个关键概念。它们的关系可以用一个简单的公式表示:
URI = URL + URN
(但 URN 在实际中很少使用,因此通常 URL 是 URI 的子集)
URI(统一资源标识符)
定义
URI 是一个广义的资源标识符,用于唯一标识某个资源(如网页、图片、API 接口等)。它可以是:
URL(资源的地址,如
https://example.com
)URN(资源的名称,如
urn:isbn:0451450523
,但现实中很少用)
URI 示例
https://example.com:8080/path/to/file?query=value#frag
mailto:user@example.com
ftp://user:pass@ftp.example.com
URL(统一资源定位符)
定义
URL 是 URI 的子集,专门用于定位互联网上的资源(即不仅标识资源,还告诉你怎么访问它)。
它必须包含 协议(Scheme) 和 主机地址(Host)。
URL 示例
https://www.google.com/search?q=uri+vs+url
ftp://user:pass@ftp.example.com/files/doc.pdf
URI vs URL 对比
特性 | URI | URL |
---|---|---|
定义 | 标识资源(可能是名称或地址) | 定位资源(必须是地址) |
是否包含协议 | 不一定(如 urn:isbn:... ) | 必须包含(如 http:// ) |
用途 | 广义资源标识(如 XML 命名空间) | 实际访问资源(如网页链接) |
示例 | mailto:user@example.com | https://example.com/index.html |
我们平时常用的都是url,因为只有定位(L--Locator)才能找到数据。
作用
curl是一个用于在服务器之间传输数据的工具。它支持以下协议:DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、,
HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET或TFTP。
该命令设计为无需用户交互即可工作。
curl提供了一系列有用的技巧,如代理支持、用户身份验证、FTP上传、HTTP post、SSL连接、Cookie、,
文件传输恢复等。
我们平时的开发,最常用的无非是从指定服务器下载我们需要的文件。
选项
参数 | 作用 | 示例 |
---|---|---|
-X <METHOD> | 指定 HTTP 方法 | curl -X POST https://api.example.com |
-H "Header: Value" | 添加请求头 | curl -H "Content-Type: application/json" |
-d 'data' | 发送 POST 数据 | curl -d '{"key":"value"}' |
-o <filename> | 下载文件并重命名 | curl -o file.zip https://example.com/file |
-O | 下载文件(保留原名) | curl -O https://example.com/file.txt |
-L | 自动跟随重定向 | curl -L https://example.com |
-v | 显示详细调试信息 | curl -v https://example.com |
-s | 静默模式(不显示进度) | curl -s https://example.com |
-k | 忽略 SSL 证书验证 | curl -k https://insecure-site.com |
-u user:pass | 基本认证 | curl -u admin:123456 http://example.com |
--limit-rate 1M | 限制下载速度 | curl --limit-rate 1M -O file.iso |
-x http://proxy:port | 使用代理 | curl -x http://127.0.0.1:8080 |
参数 | 作用 | |
-f (--fail ) | 如果 HTTP 请求失败(如 404),静默退出(不显示 HTML 错误页面) | |
-s (--silent ) | 静默模式(不显示进度条或错误信息) | |
-S (--show-error ) | 在静默模式下仍显示错误(配合 -s 使用) | |
-L--重定向
如果在尝试对网站进行URL生成时输出为空,则可能意味着该网站告诉cURL重定向到其他URL。
案例
下载文件
# 下载文件并保留原名
curl -O https://example.com/file.zip# 下载文件并自定义名称
curl -o custom_name.zip https://example.com/file.zip# 断点续传(支持大文件)
curl -C - -O https://example.com/bigfile.iso# 默认情况下,cURL不会遵循重定向,但是您可以使用 -L 来告诉它。
$ curl -L custom_name.zip https://example.com/file.zip