如何对 sqlpad 进行 Web 请求调用?
How to do a web request call to sqlpad?
您好,我一直在尝试对 sqlpad 进行 Web 请求调用。
我已经掌握了建立连接的脚本基础
Invoke-WebRequest -uri
然而,当我 运行 命令时,我得到连接 200,显示它已建立连接,但我如何使用缓存的 cookie 或如何使用凭据登录 sqlpad 并 运行 查询所有来自使用网络请求。
抱歉,我是 powershell 和 webrequest 的新手,所以非常感谢您的所有建议。
这应该是可行的。您需要使用 sqlpad api。要保留 cookie,您需要在调用 signin 时创建一个会话变量,并在以后的调用中重用它。要提取查询数据,您需要使用查询结果端点。您需要知道 connectionId(可以使用浏览器在 api/connections 处查找)和 SQL 代码(查询文本)。事实证明,没有直接的方法可以 运行 按查询名称进行查询。所以你要么需要知道查询的sql,要么你可以从/api/queries中提取它用于特定的查询
$baseUrl = "http://localhost:39325/api"
$user = "yourEmail"
$password = "yourPassword"
$signinUrl = "$baseUrl/signin?email=$user&password=$password&redirect=false"
# sign in and create session variable $ws
if(!$ws) { $r = Invoke-WebRequest -Uri $signinUrl -SessionVariable ws -Method Post } else { Write-Host "connected"}
# list of available queries and connections. May need to run this to determine connection id or existing query sql
$QueryList = Invoke-RestMethod -Uri "$baseUrl/queries" -WebSession $ws
$ConnectionList = Invoke-RestMethod -Uri "$baseUrl/connections" -WebSession $ws
Write-Host "Available queries:"
$QueryList.queries | select name, connectionId, queryText | ft -AutoSize
# Execute Query
$params = @{
connectionId = "vhsNXMXCJeI9QlUL" #use $ConnectionList var or just look up on http://localhost:39325/api/connections/
cacheKey = "null" #just some dummy value, parameter is required but it's not really affecting anything
queryName = "test2" #optional
queryText = "select top 15 * from sys.columns" # required
} | ConvertTo-Json
$head = @{'Content-Type'='application/json'}
$data = Invoke-RestMethod -Uri "$baseUrl/query-result" -Method Post -Body $params -Headers $head -WebSession $ws
$data.queryResult.rows | ft
您好,我一直在尝试对 sqlpad 进行 Web 请求调用。
我已经掌握了建立连接的脚本基础
Invoke-WebRequest -uri
然而,当我 运行 命令时,我得到连接 200,显示它已建立连接,但我如何使用缓存的 cookie 或如何使用凭据登录 sqlpad 并 运行 查询所有来自使用网络请求。
抱歉,我是 powershell 和 webrequest 的新手,所以非常感谢您的所有建议。
这应该是可行的。您需要使用 sqlpad api。要保留 cookie,您需要在调用 signin 时创建一个会话变量,并在以后的调用中重用它。要提取查询数据,您需要使用查询结果端点。您需要知道 connectionId(可以使用浏览器在 api/connections 处查找)和 SQL 代码(查询文本)。事实证明,没有直接的方法可以 运行 按查询名称进行查询。所以你要么需要知道查询的sql,要么你可以从/api/queries中提取它用于特定的查询
$baseUrl = "http://localhost:39325/api"
$user = "yourEmail"
$password = "yourPassword"
$signinUrl = "$baseUrl/signin?email=$user&password=$password&redirect=false"
# sign in and create session variable $ws
if(!$ws) { $r = Invoke-WebRequest -Uri $signinUrl -SessionVariable ws -Method Post } else { Write-Host "connected"}
# list of available queries and connections. May need to run this to determine connection id or existing query sql
$QueryList = Invoke-RestMethod -Uri "$baseUrl/queries" -WebSession $ws
$ConnectionList = Invoke-RestMethod -Uri "$baseUrl/connections" -WebSession $ws
Write-Host "Available queries:"
$QueryList.queries | select name, connectionId, queryText | ft -AutoSize
# Execute Query
$params = @{
connectionId = "vhsNXMXCJeI9QlUL" #use $ConnectionList var or just look up on http://localhost:39325/api/connections/
cacheKey = "null" #just some dummy value, parameter is required but it's not really affecting anything
queryName = "test2" #optional
queryText = "select top 15 * from sys.columns" # required
} | ConvertTo-Json
$head = @{'Content-Type'='application/json'}
$data = Invoke-RestMethod -Uri "$baseUrl/query-result" -Method Post -Body $params -Headers $head -WebSession $ws
$data.queryResult.rows | ft