`
hellosoft
  • 浏览: 54010 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ruby 解释 url 上的 get 参数

阅读更多
有一个问题请教各位:
A系统请求B系统的一个接口,其中有一个参数就是一个URL,例如
url = http://192.168.0.5/B/changeresponsible?responsible=ching

我在使用URI.parse的时候可以做到

url = http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A
uri = URI.parse(url)
uri.host # => 192.168.0.5
uri.path # => /B/changeresponsible
uri.query # =>responsible=ching&systemname=A


有什么方法可以得到url上的get参数列表?
例如得到这样的结果:
params["responsible"]="ching"
params["systemname"]="A"

大家看看如果有看不明白的,我可以再解释更详细些。
分享到:
评论
2 楼 hellosoft 2007-12-04  
A系统request B系统的一个接口,
其中传递的参数是:
params = {"url"=>"http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A "}


相单于
A:
params = {"url"=>"http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A "}
get "http://www.b.com/convert/get_to_post", params

而B中
def get_to_post
  url = params["url"]
  uri = URI.parse(url)
  explain_query(uri.query)
end

private 
  def explain_query(query_params)
    # systemname=cets&responsible=sj ==> {"systemname"=>"cets","responsible"=>"sj"}
    # only very sample explain, 
    # have not care about special char ,e.g. & = ...
    re = {}
    if query_params.nil? or query_params == ""
      return re # empty ,need not explain
    end
    querys = query_params.split("&")
    querys.each do | query |
      query_arr = query.split("=")
      re[query_arr[0]]=query_arr[1]
    end
    return re
  end


而B中的explain_query 方法就是我自己编写的解释,可是我知道,这个只能处理最简单的,一旦有一些特殊字符(例如:& = ' ) 等,我的就会解释错误。
所以想问问,有没有系统自带的,或者更好的方法来替换explain_query
1 楼 sun201200204 2007-12-04  
url = http://192.168.0.5/B/changeresponsible?responsible=ching&systemname=A
中的?后面的就相当于一个form表单的get方法。可以通过params[:X]传过去的。
当然你要在许多页面使用的话,可以存到session中,也不需要这个get方法了

相关推荐

    faster_s3_url:更快地优化Ruby中公共和预签名的AWS S3 GET URL的生成

    在ruby中更快地生成公共和预签名的AWS S3 GET URL 当生成用于访问S3对象的URL时,官方的实际上非常慢且未优化。 如果一次只创建几个S3 URL,则可能没有关系。 但这一次甚至可能影响两三百,尤其是在创建预先签名的...

    Ruby程序中发送基于HTTP协议的请求的简单示例

    #如果有GET请求参数直接写在URI地址中 uri = 'http://uri' html_response = nil open(uri) do |http| html_response = http.read end puts html_response require open-uri #如果有GET请求参数直接写在URI地址中 uri...

    nestful:具有健全API的简单Ruby HTTPREST客户端

    # url-encoded form POST Nestful.post 'http://example.com', :foo => 'bar' # JSON POST Nestful.post 'http://example.com', {:foo => 'bar'}, :format => :json 参数 # You can also provide nestled params ...

    uri-query_params:访问URI的查询参数,就像PHP中的$ _GET一样

    这与PHP中的$_GET相似,但在任何Ruby URI对象上均可用。例子检查URI query_params: require 'uri/query_params'url = URI('...

    ShareMeow:文字截图服务

    分享喵 ShareMeow是一个Ruby微服务(ooh ahh),用于从您的内容中创建超级可共享,可发布,可在Facebook上显示的图像 :smiling_cat_face_with_heart-eyes: 。 您定义一个模板(使用HTML / CSS),向其传递一些参数,...

    nfg-client:Network For Good API 的 ruby​​ 客户端

    partner_campaign, use_sandbox)第五个参数是可选的(默认为 false),它指示客户端使用哪些 API URL(沙箱或生产)。 使用客户端调用 NFG API,每次调用都将使用您要随其发送的参数(除了 NFG 凭据)的哈希值。 ...

    网址渲染服务SeimiAgent.zip

    sudo apt-get install build-essential g flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev python libx11-dev ...

    sinatra动态路线代号v-000

    目标说明动态路线的目的在控制器中创建动态路由使用URL参数来帮助将URL中的文本输入视图显示动态路由和浏览器URL之间的关系为什么动态路线很重要AirBnB如何为网站上托管的每个媒体资源创建单独的网址? 在控制器中硬...

    pagerduty-full:gem 用于访问完整的 pagerduty api

    方法的参数名称与 API 文档中解释的参数名称匹配。 require 'date' require 'pagerduty/full' # Get some dates to use start_date = Date . parse ( "2012-09-24T00:00Z" ) end_date = Date . parse ( "2012-10-...

    knight:骑士基金会赠款的材料

    骑士骑士基金会赠款的材料第一阶段:构建测试刮板,以在网络上查找和评估舞蹈批评get_descriptions 目前,抓取工具从Google处找到前100个结果,并使用MetaInspect宝石从链接中抓取了说明元标记。 结果元数据将另存为...

    discourse-debtcollective-sso:Discourse的其他实用程序扩展,以启用Debt Collective功能

    话语债务集体 该插件实现了我们的Discourse SSO...return_url是必需的参数。 如果丢失,它将返回400 要登录或注册,其他应用程序将重定向到这些端点中的任意一个,一旦登录或注册完成,它将重定向回设置有SSO cookie

    paczkomaty_inpost

    包裹储物柜Inpost 使用说明: ...inpost_get_params 检索 Paczkomaty 系统的基本参数。 它们以散列形式保存在@ api.params 中。 参数是: logo_url - 链接到 InPost paczkomaty24 / 7 标识 info_url - 信

    BookShelf:带API的BookShelf项目

    以下是搜索api:-url:“ / api / v1 / books / search.json”参数:“ term”方法:“ get” 示例: : term=title响应:-结果:[{ID:1,标题:“标题”,描述:“某些描述”,作者: “作者名称”,ISBN:...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    第21章 ActionController:路由与URL 317 21.1 基础 317 21.2 请求的路由 318 21.3 基于资源的路由 329 21.4 路由的测试 342 第22章 ActionController和Rails 345 22.1 Action方法 345 22.2 Cookie和Session 354 ...

    todo_backend:一个Rails api应用程序以与react-todo连接

    JS示例: $.ajax({url: 'http://localhost:3000/api/items', type: 'GET', data: {token: 1}}).done(function(r){ console.log(r) }) s 创建 路径:POST /项目 参数: 令牌:字符串 文字:字串 颜色:字符串 检查:...

    keyfile:基于 HTTP 的密钥文件存储,Amazon S3 的简洁替代品

    当您在命令行上只有并且不能使用更重的 S3 客户端库时,密钥文件会很有用。 它提供了 3 个端点: POST一个文件到/:key作为filedata参数来保存它。 GET from /:key取回文件(通过重定向)。 GET从/pulse来检查...

    sinatra-respond_to:用于Sinatra中内置Web服务支持的response_to样式Rails块

    优先级的顺序是format参数,扩展名,接受标头,默认内容。 概要: 允许格式为/ posts , / posts.rss和/ posts?format = atom的url路由到同一Sinatra块,并格式化特定的response_to块。 require 'sinatra' ...

    repost:使用POST方法重定向

    如果端点接收到[GET]不会有问题,因为您可以只使用redirect_to post_url(id: @model.id, token: model.token...) 。 但是,当端点收到[POST]时,您必须生成html表单并提交。 因此, repost gem

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

Global site tag (gtag.js) - Google Analytics