PowerShell:
发出 HTTP 请求

如何:

# 发送GET请求
$response = Invoke-WebRequest -Uri 'http://example.com/api/data' -Method 'GET'
# 输出响应内容
$response.Content

# 发送POST请求,带有数据
$body = @{ username='user'; password='pass' } | ConvertTo-Json
$response = Invoke-WebRequest -Uri 'http://example.com/api/login' -Method 'POST' -Body $body -ContentType 'application/json'
# 输出响应状态码
$response.StatusCode

深入探索

早在PowerShell 1.0的时候就有了通过网络发送请求的能力,但它不如现在这么直接和容易。那时你可能需要用到 .NET 的 System.Net.WebRequest 类。现在,PowerShell 提供了Invoke-WebRequestInvoke-RestMethod这两个高级命令,能更方便地处理HTTP请求。

如果需要处理RESTful API的话,Invoke-RestMethod是个不错的选择。与Invoke-WebRequest不同的是,它会自动处理JSON和XML格式的响应内容,直接返回对象,不必手动转换。

在实现上,这些命令层面调用的是.NET Framework的HttpClient类,继承了它的高效和强大的功能。尽管有些人会倾向于使用curl或者wget这样的传统命令行工具,但在PowerShell中,Invoke-WebRequestInvoke-RestMethod对于许多HTTP请求来说都是一种更方便、原生的解决方案。

参考链接