如何对 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