gpt4 book ai didi

ruby - Sinatra 和问号

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:57 25 4
gpt4 key购买 nike

我需要使用 Sinatra 制作一些方法,应该如下所示:

http//:localhost:1234/add?string_to_add

但是当我这样声明时:

get "/add?:string_to_add" do
...
end

它没有看到 string_to_add 参数。

我应该如何声明我的方法并使用此参数使事情正常进行?

最佳答案

在 URL 中,用问号分隔 path部分来自 query部分。查询部分通常由名称/值对组成,通常由 Web 浏览器构造以匹配用户在表单中输入的数据。例如,一个 url 可能如下所示:

http://example.com/submit?name=John&age=93

这里是/submit中的路径部分, 查询部分是 name=John&age=93它指的是 name 的值“John”键,“93”代表 age .

当你create a route在 Sinatra 中,您只需指定路径部分。然后 Sinatra 解析查询,并使其中的数据在 params 中可用。目的。在此示例中,您可以执行以下操作:

get '/submit' do
name = params[:name]
age = params[:age]
# use name and age variables
...
end

如果您使用 ?定义 Sinatra 路由时的字符,它使部分 url 可选。在您使用的示例 ( get "/add?:string_to_add" ) 中,它实际上会匹配以 /ad 开头的任何 url。 ,然后可选地另一个 d ,然后其他任何内容都将放入 :string_to_add 中params hash 的 key,query 部分将被单独解析。换句话说,问号使前面的 d字符可选。

如果您想在 Sinatra 中获取查询字符串的“原始”文本,您可以使用 query_string method of the request object .在您的示例中,它看起来像这样:

get '/add' do
string_to_add = request.query_string
...
end

请注意,该路线不包括 ?字符,只是基础 /add .

关于ruby - Sinatra 和问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15774187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com