【问题标题】:Call API inside powershell function在 powershell 函数中调用 API
【发布时间】:2021-02-25 05:43:11
【问题描述】:

如何在函数内部调用 API。这是我的网址https://www.gov.uk/bank-holidays.json。我是 powershell 新手,你能帮我做这件事吗?

function Holiday {
 
   $list = Invoke-RestMethod -Method Get -Uri https://www.gov.uk/bank-holidays.json
   Write-Host "$list"

}

但我无法列出。你能帮我吗?

【问题讨论】:

    标签: json powershell powershell-4.0 invoke-restmethod


    【解决方案1】:

    Invoke-RestMethod 自动将 API 的 JSON 响应解析为一个对象 [graph] - 一个嵌套的 [pscustomobject] 实例。

    虽然对于后续的OO处理非常方便,但是这样一个对象的显示表示并不是很有帮助。

    您可以简单地将转换回 JSON 以将结果可视化:

    function Get-Holiday {
     
      # Call the API, which returns JSON that is parsed into a [pscustomobject]
      # graph, and return (output) the result.
      Invoke-RestMethod -Method Get -Uri https://www.gov.uk/bank-holidays.json
    
    }
    
    $list = Get-Holiday
    
    # Visualize the object for display by converting it back to JSON.
    $list | ConvertTo-Json -Depth 3
    

    请注意,不幸的是需要明确指定-Depth 3 - 请参阅this question

    关于处理,下面是一个访问英格兰和威尔士的第一个条目的示例:

    $list.'england-and-wales'.events[0]
    

    以上产出:

    title          date       notes bunting
    -----          ----       ----- -------
    New Year’s Day 2015-01-01          True
    

    【讨论】:

    • JSON 在powershell中解析是这样完成的吗?这种方法是否特定于 JSON
    • 嗨,我需要从英国和威尔士、苏格兰、北爱尔兰等所有对象中获取日期值。使用这个 $list.'england-and-wales'.events.date 我将只获得英格兰和威尔士的详细信息,但我无法获取剩余的苏格兰、北爱尔兰日期
    • @NicholasSaunders: ConvertFrom-JsonInvoke-RestMethod(带有 JSON 响应)使用 [pscustomobject] 将 JSON 解析为对象模型,您可以使用常规点符号访问该对象模型。
    • @AFFISHMOHAMMAD: $list.scotland.events[0]$list.'northern-ireland'.events[0] 同样,如果您需要进一步的帮助,我鼓励您提出问题。
    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2017-05-20
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    相关资源
    最近更新 更多