# process.curl 库模块帮助文档

<details>  <summary>必读与参考文档</summary>  <p>
默认调用系统自带的 "curl.exe"，适用于 Win10 1803 及之后操作系统。
导入 process.curl.7.81 可兼容更低版本的操作系统。
XP，Win7 在市场上已经接近消失，现在开发软件再处处考虑这些已经不重要了。

process.curl.open 会显示控制台与进度（可用 console.open 提前打开控制台，curl 就不会创建新控制台）。
process.curl.popen 返回的是进程管道，不会显示控制台与进度。
process.curl 直接返回进程输出，不会显示控制台与进度。

如果希望直接调用 curl 的 API 接口，请改用 curl 扩展库。

curl 文档：
https://curl.se/docs/manual.html
https://curl.se/docs/manpage.html

调用 process.curl,process.curl.open,process.curl.popen 如果指定表参数则以下字段会进行额外处理：

- `-json` 如果字段值为表对象则会自动转换为 JSON 文本，
并自动添加请求头 `Content-Type: application/json"` 与 `Accept: application/json` 。

- `-d` 如果字段值为表对象则会自动进行 URL 编码并转换为字符串。

process.curl,process.popen 都会自动添加 `-s` 参数（ silent 静默模式）。
</p></details>

## process 成员列表 <a id="process" href="#process">&#x23;</a>

### process.curl() <a id="process.curl" href="#process.curl">&#x23;</a>
调用 curl 命令，不显示控制台与进度。  
可用一个或多个字符串指定命令行参数，  
也可以用一个表参数指定一个或多个命令行参数，  
表参数可包含数组，也包含命名参数，键名首字符必须是 - 。  
所有参数调用 process.joinArguments 转换为单个参数。  

成功返回输出结果（或空字符串），失败返回 null,错误退出代码，  
退出代码请参考 https://everything.curl.dev/cmdline/exitcode.html?highlight=returns#available-exit-codes   
如果返回输出首尾为 {} 或 [] 则尝试解析 JSON 并返回对象或数组。  
如果两个返回值都是 null 表示操作系统版本过低，系统找不到 curl.exe 。  
如果第一个返回值为 null ，表示虽然 curl.exe 存在，但创建 curl 进程失败。  
但如果 curl 成功执行了，返回值则一定是字符串（至少也是空字符串）。

## process.curl 成员列表 <a id="process.curl" href="#process.curl">&#x23;</a>

用于调用 curl 命令  
默认调用系统自带的 "curl.exe"，适用于 Win10 1803 及之后操作系统。  
导入 process.curl.7.81 可兼容更低版本的操作系统。  

如果希望直接调用 curl 的 API 接口，请改用 curl 扩展库

### process.curl.open() <a id="process.curl.open" href="#process.curl.open">&#x23;</a>
调用 curl 命令，返回进程对象。  
可用一个或多个字符串指定命令行参数，  
也可以用一个表参数指定一个或多个命令行参数，  
表参数可包含数组，也包含命名参数，键名首字符必须是 - 。  
所有参数调用 process.joinArguments 转换为单个参数。  

如果未指定 -s 或 --silent 参数则默认输出进度。  
此函数会打开控制台，适用于控制台程序（建议先调用 console.open ），  
改用 process.curl.popen 可隐藏控制台与进度

[返回对象:processObject](https://www.aardio.com/zh-cn/docs/library-reference/process/_.html#processObject)

### process.curl.path <a id="process.curl.path" href="#process.curl.path">&#x23;</a>
curl.exe 路径。  
默认为 "curl.exe"，适用于 Win10 1803 及之后操作系统自带的 curl。  
改用 curl.process 可兼容更低版本的操作系统。

### process.curl.popen() <a id="process.curl.popen" href="#process.curl.popen">&#x23;</a>
调用 curl 命令，  
隐藏控制台与进度，返回进程管道（process.popen 对象）。  
改用 process.curl.open 可显示控制台与进度。  

可用一个或多个字符串指定命令行参数，  
也可以用一个表参数指定一个或多个命令行参数，  
表参数可包含数组，也包含命名参数，键名首字符必须是 - 。  
所有参数调用 process.joinArguments 转换为单个参数

[返回对象:processPopenObject](https://www.aardio.com/zh-cn/docs/library-reference/process/popen.html#processPopenObject)

### process.curl.workDir <a id="process.curl.workDir" href="#process.curl.workDir">&#x23;</a>
curl 工作目录。  
默认为 "/"，即 aardio 应用程序根目录
