curl -X PUT zsh权限被拒绝

时间:2014-10-13 23:30:09

标签: rest curl express zsh mean-stack

教程:https://thinkster.io/angulartutorial/mean-stack-tutorial/#upvoting-posts-10

我通过上面的thinkster链接学习了MEAN教程(模拟Reddit / Hacker News),并且在发送curl -X PUT命令时,我对拒绝权限感到困惑:

curl -X PUT http://localhost:3000/posts/<POST ID>/upvote

回复:zsh: permission denied: /upvote

我期待返回的帖子值随着upvote属性的增加而增加。

我已经设置了我的模型(帖子和评论),路线和模式以匹配教程的模型,我不确定我错过了什么。这是我的权限级别的问题吗?如果是这样,我如何进行更改或修改它仅用于上述测试目的?

1 个答案:

答案 0 :(得分:1)

<POST ID>很可能被实际的帖子ID替换(感谢Daniel Stenberg指出这一点)。因此,如果帖子ID为123456,则命令将如下所示:

curl -X PUT http://localhost:3000/posts/123456/upvote

如果<POST ID>确实打算在命令中逐字使用,则必须引用该网址:

curl -X PUT 'http://localhost:3000/posts/<POST ID>/upvote'

<强>解释

>(以及<)是zsh(以及大多数其他unix shell)的语法元素。 >用于将命令的输出重定向到文件而不是标准输出。在这种情况下,zsh认为它应该将输出写入/upvote

此外,该行还有两个问题。 <POST被视为“来自文件POST的读取输入”。即使<>不是特殊的,<POST ID>中仍有一个空格会将网址分成两个参数。

所以最初这条线的解释如下:

curl -X PUT http://localhost:3000/posts/ < POST ID > /upvote
---- -- --- ---------------------------- ------ -- ---------
^    ^  ^   ^                            ^      ^  ^ 
|    |  |   |                            |      |  \_ redirect stdout to /upvote
|    |  |   |                            |      \_ 4th argument to curl
|    |  |   |                            \_ read stdin from POST   
|    |  |   \_ 3rd argument to curl
|    |  \_ 2nd argument to curl
|    \_ 1st argument to curl
\_ command