Sinatra app.post 给出 403

Sinatra app.post gives a 403

我正在尝试获得简单的看跌期权并获得 运行ning。 Get 完美运行,但我似乎得到了带有 PUT 的 404。

我尝试过的事情:

  1. 编写了 app.get "/users/:id" 和 localhost:3000/users/400 的代码以在浏览器上打印用户的 id -> 这行得通,这是一个 get
  2. 尝试对 post -> app.post“/users/add”(下面的代码)做同样的事情并做了 "localhost:3000/users/add/11" 但我得到了 404。

我的疑惑:

  1. 如何在浏览器上测试 post? URL 应该如何?我可以将要 post 编辑的信息放在 URL 的什么地方?还是不应该在URL中指定? (这令人困惑)我猜是缺少输入数据导致我出现 404。

我在 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

任何帮助都会很棒。我也非常愿意阅读任何东西。

看来你对这里的一些事情感到困惑。

首先put和post是不一样的。 PUT vs POST in REST 可能您想使用 post.

你可能想要的是这样的:

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>

因此,如果您打开呈现视图的 url(如 /users/add),您的浏览器将执行 GET。如果您按下 submit,带有您输入字段的表单将得到 posted。

要测试您的 Post 路线,您还可以使用类似 curl:

curl --data "param1=value1&param2=value2" http://localhost:3000/users/add