2017-06-04 80 views
0

我有一个来自meraki的特定REST API的问题。我已经能够成功执行所有获取操作,但POST操作正在从服务器收到“308”错误。我试图做到以下几点:与Meraki仪表板API的PowerShell REST API问题

请求示例:

curl -L -H 'X-Cisco-Meraki-API-Key: <key>' -X POST -H 'Content-Type: 
application/json' --data-binary '{"name":"Miles Meraki", 
"email":"[email protected]", "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代码作为返回码。任何指导都会非常有帮助。

+0

是'$ jbody'一个字符串还是一个powershell对象? – 4c74356b41

+1

你能提供完整的退货状态吗? 308是永久重定向,新的URL应该是响应的一部分。 –

+0

查看过文档后,它看起来像URL中的'v0'或许应该是'v1'或当前发布的任何版本的API,这可能会解释308重定向响应。无论是它还是它将您重定向到登录页面,可能是因为它拒绝了您的密钥?根据其他评论,需要完整的错误或查看重定向你的位置。 –

回答

0

好吧,我想出了这个问题,这要归功于我能够回到路上并找出答案的一些回应。我的问题的第一部分是了解308响应错误的含义。在了解这是一个重定向错误之后,我手动在网络浏览器中运行rest命令以找出重定向URL。然后我使用这个URL作为我的休息字符串的URI前缀。我在弄清楚发生了什么问题时遇到的第二个问题是,我没有收到服务器响应错误中的足够信息。我发现了另一个堆栈溢出话题,告诉我如何获得完整的JSON响应 Here

做StreamReader的方法,我得到了什么我的错误是一个更好的描述之后:

Email [email protected] is already registered with a Cisco Meraki Dashboard account. For s ecurity purposes, that user must verify his/her email address before administrator permis sions can be granted here.

因此很明显,这个问题煮直到我试图在仪表板上创建一个与api示例文档中名称相同的测试帐户。我只是用我自己的自定义后缀修改了电子邮件后缀,解决了问题,其余的命令都起作用了!

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