正如丹尼尔所说“ You can't just open it in a browser. You have to provide a request body
”
因此,您可以使用Postman等工具发送带有请求正文的请求,也可以使用 PowerShell 调用带有请求正文的 REST API。
此外,根据我的测试,您提到的 REST API(代码搜索结果)似乎不适用于本地 TFS。我在 TFS 2018 Update2 ( Version 16.131.27701.1
) 上测试过,它总是返回"count": 0,
.
但是,您可以使用以下 REST API 来搜索代码:
POST http://server:8080/tfs/DefaultCollection/{Project}/_api/_search/postCodeQuery?api-version=4.1-preview.1
请求正文:
{"searchText":"<test1>",
"scope":"Team Foundation Server",
"filters":"{\"ProjectFilters\":[\"0511ScrumTFVC\"]}",
"skipResults":0,
"takeResults":50,
"sortOptions":""
}
下面的 PowerShell 示例供您参考:
Param(
[string]$baseurl = "http://server:8080/tfs/DefaultCollection",
[string]$projectName = "ProjectName",
[string]$user = "username",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
function CreateJsonBody
{
$value = @"
{"searchText":"<test1>",
"scope":"Team Foundation Server",
"filters":"{\"ProjectFilters\":[\"ProjectName\"]}",
"skipResults":0,
"takeResults":50,
"sortOptions":""
}
"@
return $value
}
$json = CreateJsonBody
$uri = "$baseurl/$($projectName)/_api/_search/postCodeQuery?api-version=4.1-preview.1"
Write-Host $uri
$result = Invoke-RestMethod -Uri $uri -Method POST -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$result = $result | convertto-json
Write-host $result
![在此处输入图像描述](https://i.stack.imgur.com/uI2pR.png)