Sinatra app.post给出403

时间:2015-03-19 19:00:48

标签: sinatra

我正在尝试简单的放置并开始运行。完美的工作,但我似乎得到了404与PUT。

我尝试过的事情:

  1. 为app.get“/ users /:id”和localhost:3000 / users / 400编写代码以在浏览器上打印用户的ID - >这是有效的,这是一个获得
  2. 尝试为帖子做同样的事情 - > app.post“/ users / add”(下面的代码)并做了一个“localhost:3000 / users / add / 11”,但我得到了404.
  3. 我的怀疑:

    1. 如何在浏览器上测试帖子? URL应该如何?我在哪里可以将信息发布到URL中?或者不应该在URL中指定? (这很令人困惑)我猜测缺少输入数据给了我一个404。
    2. 我在Sinatra框架上运行这个,这就是我在控制台上看到的:

        

      INFO WEBrick :: HTTPServer #start:pid = 10137 port = 3000   :: 1 - - [19 / Mar / 2015:11:36:34 -0700]“GET / users / add HTTP / 1.1”403 - 0.0156

      (等等,这不应该是POST吗?)

        

      :: 1 - - [19 / Mar / 2015:11:36:45 -0700]“GET / users / add / 11 HTTP / 1.1”404 688 0.0086

      (关于如何指定要放置的数据的问题)

        

      :: 1 - - [19 / Mar / 2015:11:43:15 -0700]“GET / users / add / name = 11 HTTP / 1.1”404 693 0.0018

      我的路线users.rb代码:

      module Routes
        module Users
          def self.registered(app)
            app.post '/users/add' do
               reqUserId = params[:id]
               "params id #{reqUserId}"
          end  
       end
      end
      

      任何帮助都会很棒。我也非常乐于阅读任何内容。

1 个答案:

答案 0 :(得分:0)

看起来你好像被这里的一些东西搞糊涂了。

首先,put和post不一样。 PUT vs POST in REST可能你想用帖子。

你可能想要的是这样的:

get "/users/add" do
    erb :useradd
end

post "/users/add" do
    params[:userId]
    #render layout or redirect to a url
end

您的useradd erb模板如下所示:

<form action="/users/add" method="post">
    <input name="userId" type="text" />
    <input type="submit" value="submit" id="submit" />
</form>

因此,如果您打开一个呈现视图的/users/add网址,那么您的浏览器会执行GET操作。如果按下submit,表单会显示您的输入字段。

要测试您的帖子路线,您还可以使用curl:

之类的东西
curl --data "param1=value1&param2=value2" http://localhost:3000/users/add