3
我想調用一個REST API傳遞一個包含反斜槓字符的參數。Invoke-RestMethod將反斜槓轉換爲斜槓
API需要一個類似api/test/<app_name>/<user_name>
的路由,例如我想通過domain\login
作爲user_name
的值。
我試圖與PowerShell的:
$uri = [Uri]::EscapeUriString("http://localhost:5555/api/test/App Name/Domain\login")
# now $uri = 'http://localhost:5555/api/test/App%20Name/Domain%5Clogin'
Invoke-RestMethod -Method Get -Uri $uri -Verbose
的Invoke-RestMethod
與-Verbose
標誌輸出顯示的PowerShell 是反斜槓轉換成斜線,之後我從REST API 404(這是意料之中的,因爲路線不匹配):
VERBOSE: GET http://localhost:5555/api/test/App Name/Domain/login with 0-byte payload
Invoke-RestMethod :
404 Not Found
我怎樣才能避免這種行爲,使用的路徑與編碼的反斜線?
這裏是我的$PSVersionTable
變量的輸出:
> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.953
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14393.953
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
有趣。可以在windows上重現這100%。在CentOS上,\轉換爲'/',但%5C'保持爲'%5C' ... – Clijsters
是的,奇怪的是我明確地逃避它,它仍然被替換。 –
您使用的是什麼版本的PowerShell?我正在使用5.1,而我的詳細輸出爲'VERBOSE:GET http:// localhost:5555/api/test/App Name/Domain%5Clogin with 0-byte payload',這表明它保留了反斜槓。 – Robin