我在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!
感谢所有人!
答案 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)
或类似的东西。祝你好运!