gpt4 book ai didi

Sinatra 上的 ruby : Imitate a request based on a parameter

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:15 24 4
gpt4 key购买 nike

我目前正在开发基于 Sinatra 的 Ruby API。此 API 主要接收来自支持外部 API 集成的现有社交平台的 GET 请求。

社交平台以以下格式触发 GET 请求(仅显示相关参数):

GET /{command}

参数:commandtext

其中 text 是用户输入的字符串。

在我的例子中,params[:text] 实际上是一系列命令,由空格分隔。我想要实现的是,例如: If params[:text]="corporate finance"

然后我希望我的 API 将请求解释为 GET 请求/{命令}/企业/财务而不是使用字符串作为包含请求的其余部分的参数来请求/{command}。

我这边能实现吗?社交平台的初始请求不能改变。

编辑:我认为解释我想要实现的目标的更好方法如下:

GET /list?text=corporate finance

应该到达相同的端点/路线

GET /list/corporate/finance

这不得影响来自社交平台的初始 GET 请求,因为它希望向用户显示包含文本的响应。是否有一种简洁的最佳实践方法可以做到这一点?

最佳答案

get "/" do {
text = params[:text].split.join "/"
redirect "#{params[:command]}/#{text}"
end

可能会成功。虽然没有检查。

编辑:好的,之前的过滤器很愚蠢。基本上你也可以路由到“/”然后重定向。或者,甚至更好:

get "/:command" do {
text = params[:text].split.join "/"
redirect "#{params[:command]}/#{text}"
}

有许多可能的方法可以实现这一目标。您应该查看 sinatra 文档的路由部分 (https://github.com/sinatra/sinatra)

关于Sinatra 上的 ruby : Imitate a request based on a parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205159/

24 4 0