【问题标题】:curl -X PUT zsh permission deniedcurl -X PUT zsh 权限被拒绝
【发布时间】:2014-10-13 23:30:08
【问题描述】:

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

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

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

回复:zsh: permission denied: /upvote

我期望随着 upvote 属性的增加返回 post 值。

我已经设置了我的模型(帖子和评论)、路由和架构以匹配本教程的内容,但我不确定我缺少什么。这是我的权限级别的问题吗?如果是这样,我该如何更改或修改它以仅用于上述测试目的?

【问题讨论】:

    标签: rest curl express zsh mean-stack


    【解决方案1】:

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

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

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

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

    解释

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

    此外,该行还有两个问题。 &lt;POST 被视为“从文件 POST 中读取输入”。即使&lt;&gt; 并不特殊,&lt;POST ID&gt; 中仍然有一个空格会将 URL 分成两个参数。

    原来这行是这样解释的:

    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
    

    【讨论】:

    • 另外,我猜URL中的“”应该替换为实际的ID...
    • @DanielStenberg 感谢您的提示。我猜你的假设是对的。
    • @DanielStenberg 我也尝试过使用实际 ID,但得到了相同的响应。让我再检查一次……
    猜你喜欢
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2021-10-07
    • 2014-05-29
    相关资源
    最近更新 更多