Ruby / Sinatra - 如何在lambda类中调用post?

时间:2016-04-14 16:53:10

标签: ruby sinatra

我在sinatra做了一个小程序,我想用动态uri来表达一些动态的帖子,所以我创建了一个像这样的Connexion类:

class Connexion
  def initialize(path)
    @path = path
  end

  def sinatraPost
    post "/#{@path}" do
     # some code
  end
  end
end

但是当我启动sinatraPost时,我遇到了这个错误:

 undefined method `post' for #<Connexion:0x000000026206b8> (NoMethodError)

如何在课堂上调用sinatra post方法?

编辑:好的!所以,我改变了我的策略,我有以下代码:

class Webhook < Sinatra::Base

 get '/:name' do
  # compare with names array
 end
end

Webhook.run!

感谢所有人!

1 个答案:

答案 0 :(得分:0)

看起来你正在以错误的方式解决这个问题。如果要将应用程序设置为接收 POST请求,则需要在控制器中使用路由逻辑。 Sinatra控制器通常如下所示:

require 'sinatra'

get '/route1' do
  # do stuff
end

post '/route2' do
  # do stuff
end

如果您使用的是模块化应用,则您希望自己的应用继承自Sinatra::Base。有关详情,请参阅Sinatra docs

发布帖子请求是不同的,并且不依赖于Sinatra方法。

require 'net/http'

uri = URI("http://google.com")
headers = {}
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri, headers)
response = http.request(request)

或类似的东西。祝你好运!