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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐