【问题标题】:powershell REST API issue with Meraki Dashboard APIMeraki Dashboard API 的 powershell REST API 问题
【发布时间】:2017-06-04 01:45:20
【问题描述】:

我在使用 meraki 的特定 REST api 时遇到问题。我已经能够成功执行所有 get 操作,但是 POST 操作我从服务器收到“308”错误。我正在尝试执行以下操作:

示例请求:

curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -X POST -H 'Content-Type: 
application/json' --data-binary '{"name":"Miles Meraki", 
"email":"miles@meraki.com", "orgAccess":"none", "tags":[{"tag":"west", 
"access":"read-only"}]}' 
'https://dashboard.meraki.com/api/v0/organizations/1234/admins'

我的要求:

Invoke-RestMethod -Method Post -Uri 
https://dashboard.meraki.com/api/v0/organizations/$global:MerakiOrg/admins/ -
Body $jbody -Headers $Global:MerakiHeader -ContentType 'application/json'

我的 $jbody 值是从示例中复制的文字 json。我不熟悉这个 308 代码作为返回代码。任何指导都会非常有帮助。

【问题讨论】:

  • $jbody 字符串还是powershell 对象?
  • 能否提供完整的退货状态? 308 是永久重定向,新的 URL 应该是响应的一部分。
  • 查看文档后,URL 中的 v0 可能应该是 v1 或当前发布的任何 API 版本,这可能解释了 308 重定向响应。要么是它,要么是因为它拒绝了你的密钥而将你重定向到登录页面?根据其他评论,需要完整的错误或查看它会将您重定向到哪里。
  • 1.) 当我运行 get-member 时,它显示为 System.String,这很奇怪,因为我将该正文通过管道传输到“convertto-json”中。如果我运行 convertfrom-json,它会正确地将其转换为正常的 psobject 格式。
  • 2.) @Micky-Balladelli 当我输出异常时,我得到的是:System.Net.WebException:远程服务器返回错误:(308)。

标签: rest powershell


【解决方案1】:

好的,我找到了问题所在,多亏了一些回复,我才得以重新开始并找出答案。我的问题的第一部分是理解 308 响应错误的含义。在了解这是一个重定向错误后,我在 Web 浏览器中手动运行了 rest 命令以找出重定向 URL。然后我使用这个 URL 作为我的 rest 字符串的 URI 前缀。我在弄清楚出了什么问题时遇到的第二大问题是我没有在服务器响应错误中获得足够的信息。我发现了另一个堆栈溢出主题,它向我展示了如何获得完整的 json 响应 Here

执行流式阅读器方法后,我更好地描述了我的错误是什么:

电子邮件miles@meraki.com 已注册Cisco Meraki Dashboard 帐户。对于 s 出于安全目的,该用户必须在管理员许可之前验证他/她的电子邮件地址 可以在这里授予sions。

所以显然问题归结为我试图在我的仪表板上创建一个与 api 示例文档中的名称相同的测试帐户。我只是用我自己的自定义后缀修改了电子邮件后缀,就解决了问题,其余命令正常工作!

感谢那些帮助我指出正确方向的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2017-01-23
    • 1970-01-01
    • 2017-10-17
    • 2019-05-22
    • 1970-01-01
    相关资源
    最近更新 更多