Как разделить / разобрать строку URL в объект? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь разбить URL на объект.

$url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1

Желаемый результат будет

PS C:\WINDOWS\system32> $url.api 
https://api.somedomain.com/v2/direct-access

PS C:\WINDOWS\system32> $url.dataset
producing-entities-details

PS C:\WINDOWS\system32> $url.params
entity_id=104194825&format=json&page=1 

Я уверен, что это можно сделать в сочетании с регулярным выражением, но мне также интересно, если это можно сделать, просто используя встроенныйФункциональность PowerShell.

Ответы [ 2 ]

0 голосов
/ 31 мая 2019
$url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"

$uri = [System.Uri]$url

$ParsedQueryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)

$i = 0
$queryParams = @()
foreach($QueryStringObject in $ParsedQueryString){
    $queryObject = New-Object -TypeName psobject
    $queryObject | Add-Member -MemberType NoteProperty -Name Query -Value $QueryStringObject
    $queryObject | Add-Member -MemberType NoteProperty -Name Value -Value $ParsedQueryString[$i]
    $queryParams += $queryObject
    $i++
}
$queryParams

Выход:

Query     Value
-----     -----
entity_id 104194825
format    json
page      1
0 голосов
/ 13 декабря 2018

Нет необходимости возиться с регулярным выражением.Ускоритель типа [uri] сделает часть этой работы за вас.Другие части, по-видимому, зависят от того, как вы решили интерпретировать данные, а не от того, как работает анатомия URL.

PS C:\Users\matt> $url = [uri]"https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"

PS C:\Users\matt> $url.Query
?entity_id=104194825&format=json&page=1

Вы можете изучить другие свойства и посмотреть, как они вам помогут.Например, вам может понадобиться построить сегменты, чтобы получить другие части, которые вы ищете.

PS C:\Users\matt>   $url.Segments
/
v2/
direct-access/
producing-entities-details
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...