PowerShell URI 模板解析
PowerShell URI template parsing
我想使用 Octopus REST API and I wanted to take full advantage of the HATEOAS links that are provided in Octopus REST API and some of them use URI Templates。
我在 Octopus 论坛上发现了一个相当古老的 post here 但我想知道 4 年多过去了,是否有更好的解决方案用于 PowerShell 中的 Uri 模板解析。
如果没有,我可以使用论坛中列出的.NET Uri Templating 解析包post。
所以我找不到任何本机解决方案,但我将分享一个实现 Resta.UriTemplates.
的示例
# Example adapted from: https://github.com/a7b0/uri-templates#examples
Install-Package Resta.UriTemplates -Version 1.3.0
# Import the Resta.UriTemplates assembly
$Path = '.\Resta.UriTemplates.1.3.0\lib\netstandard2.0\Resta.UriTemplates.dll'
Add-Type -Path $Path -PassThru | Select-Object -ExpandProperty Assembly | Select-Object -ExpandProperty FullName -Unique
# Returns:
# Resta.UriTemplates, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null
$template = [Resta.UriTemplates.UriTemplate]'http://example.org/{area}/news{?type,count}'
Write-Output $template
# Returns:
# Template Variables
# -------- ---------
# http://example.org/{area}/news{?type,count} {area, type, count}
$dict = New-Object 'system.collections.generic.dictionary[string,object]'
$dict["area"] = "world"
$dict["type"] = "actual"
$dict["count"] = "10"
$template.Resolve($dict)
# Returns:
# http://example.org/world/news?type=actual&count=10
我想使用 Octopus REST API and I wanted to take full advantage of the HATEOAS links that are provided in Octopus REST API and some of them use URI Templates。
我在 Octopus 论坛上发现了一个相当古老的 post here 但我想知道 4 年多过去了,是否有更好的解决方案用于 PowerShell 中的 Uri 模板解析。
如果没有,我可以使用论坛中列出的.NET Uri Templating 解析包post。
所以我找不到任何本机解决方案,但我将分享一个实现 Resta.UriTemplates.
的示例# Example adapted from: https://github.com/a7b0/uri-templates#examples
Install-Package Resta.UriTemplates -Version 1.3.0
# Import the Resta.UriTemplates assembly
$Path = '.\Resta.UriTemplates.1.3.0\lib\netstandard2.0\Resta.UriTemplates.dll'
Add-Type -Path $Path -PassThru | Select-Object -ExpandProperty Assembly | Select-Object -ExpandProperty FullName -Unique
# Returns:
# Resta.UriTemplates, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null
$template = [Resta.UriTemplates.UriTemplate]'http://example.org/{area}/news{?type,count}'
Write-Output $template
# Returns:
# Template Variables
# -------- ---------
# http://example.org/{area}/news{?type,count} {area, type, count}
$dict = New-Object 'system.collections.generic.dictionary[string,object]'
$dict["area"] = "world"
$dict["type"] = "actual"
$dict["count"] = "10"
$template.Resolve($dict)
# Returns:
# http://example.org/world/news?type=actual&count=10