教程: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属性的增加而增加。
我已经设置了我的模型(帖子和评论),路线和模式以匹配教程的模型,我不确定我错过了什么。这是我的权限级别的问题吗?如果是这样,我如何进行更改或修改它仅用于上述测试目的?
答案 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