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-WebRequest
和Invoke-RestMethod
这两个高级命令,能更方便地处理HTTP请求。
如果需要处理RESTful API的话,Invoke-RestMethod
是个不错的选择。与Invoke-WebRequest
不同的是,它会自动处理JSON和XML格式的响应内容,直接返回对象,不必手动转换。
在实现上,这些命令层面调用的是.NET Framework的HttpClient类,继承了它的高效和强大的功能。尽管有些人会倾向于使用curl
或者wget
这样的传统命令行工具,但在PowerShell中,Invoke-WebRequest
和Invoke-RestMethod
对于许多HTTP请求来说都是一种更方便、原生的解决方案。