`
hellosoft
  • 浏览: 55197 次
  • 性别: 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方法了

相关推荐

    Ruby-RESTClient简单的HTTP和Ruby的REST客户端

    2. **请求参数**:在发送请求时,你可以添加URL参数、查询字符串、请求头和请求体。例如,发送带有JSON数据的POST请求: ```ruby require 'rest-client' payload = { key1: 'value1', key2: 'value2' } REST....

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

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

    Ruby-httparty让http有趣

    在这个例子中,`base_uri`定义了API的基础URL,`get`方法用于发送GET请求,`parsed_response`则将返回的HTTP响应体转换为Ruby对象(通常为JSON)。 httparty还支持POST请求,可以方便地发送JSON数据: ```ruby def...

    Ruby-HttpClient在Ruby中提供类似libwwwperlLWP的功能

    3. 设置请求参数,如URL、方法、头部、主体等。 4. 发送请求并获取响应:`response = client.get(url)` 5. 处理响应,如读取响应体、检查状态码等。 通过HttpClient,Ruby开发者可以轻松地实现网络爬虫、自动化测试...

    Ruby+for+Rails

    Rails的路由系统将URL映射到控制器的动作上,定义在`config/routes.rb`文件中。例如,`resources :books`会生成CRUD(创建、读取、更新、删除)相关的路由。 8. **ActiveRecord** Rails的ORM(对象关系映射)层,...

    Ruby-RubyJMeter一个基于Ruby的DSL用于构建JMeter测试计划

    Ruby-JMeter是一个强大的工具,它将Ruby编程语言与Apache JMeter测试框架相结合,为性能测试和负载测试提供了灵活且易于使用的领域特定语言(DSL)。这个工具使得测试人员和开发者能够用Ruby编写JMeter测试计划,...

    Ruby on Rails入门经典代码

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...

    Ruby-EMMidori轻量级灵活和快速的RubyWeb框架

    **Ruby-EMMidori:轻量级、灵活...综上所述,EMMidori是一个值得探索的Ruby Web框架,尤其对于那些追求高性能、低资源占用以及高度定制性的项目而言。通过掌握EMMidori,开发者可以创建出响应迅速、运行高效的Web应用。

    Ruby-ApipieRubyonRailsAPI文档和展示工具使用Ruby语法

    它使得开发者能够用Ruby自身的语法来注释控制器、动作和参数,从而自动生成易于理解和使用的API文档。这个工具的目标是将API文档的编写与代码紧密结合起来,确保文档始终保持最新,因为它们是直接从源代码中提取的。...

    Ruby-rubyserver标准文件协议的生产就绪实现

    为了提高性能,Ruby服务器可能采用了各种优化策略,如预加载Ruby字节码、GIL(全局解释器锁)的管理、异步I/O、内存管理和缓存策略等。 7. **错误处理和日志记录**: 生产就绪的服务器应具备完善的错误处理机制,...

    Ruby-Faraday简单但灵活的HTTP客户端库支持多种后端

    使用Faraday,你可以轻松地发送GET、POST、PUT、DELETE等HTTP请求,并管理头部、参数和主体内容。例如,以下是如何使用Faraday发起一个GET请求: ```ruby require 'faraday' conn = Faraday.new('...

    Ruby-PatronRuby基于libcurl的HTTP客户端

    可以通过`headers`属性设置请求头,通过`params`方法设置URL参数。例如: ```ruby session.headers = { 'User-Agent' => 'MyApp' } session.params = { key: 'value' } ``` 6. **POST请求与数据**: 对于POST...

    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...

    Ruby-HTTPTheGemaka一个快速的RubyHTTP客户端

    这包括设置URL、HTTP方法、请求体、查询参数等。对于响应,可以方便地访问状态码、头部信息以及解码响应体。 6. **错误处理**:Ruby-HTTP The Gem 对常见的HTTP错误和网络问题提供了良好的异常处理机制,帮助开发者...

    Ruby-Blanket一个超级简单的API包装器

    2. **请求处理**:Blanket支持GET、POST、PUT、DELETE等多种HTTP方法,并可以方便地添加自定义头信息和请求参数。它还支持JSON编码和解码,使得数据交换更加便捷。 3. **错误处理**:当API响应状态码非200时,...

    Ruby-RequestVia一个实用的HTTP客户端基于封装NetHTTP

    6. **请求和响应的元数据**:RequestVia提供了丰富的元数据,包括请求的URL、请求头、响应状态码、响应体等,方便开发者进行调试和日志记录。 7. **中间件支持**:类似于Rails的Middleware概念,RequestVia允许你...

    Ruby-versionist一个插件用于版本化基于Rails的RESTfulAPIs

    现在,你可以通过`Accept-Version`请求头或者URL路径参数来指定API版本。对于客户端,它们可以根据需要选择合适的方式与你的API进行交互。 总之,Ruby-versionist插件为Rails开发者提供了一种优雅的方式来管理和...

    ruby on rails API

    Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web应用开发。API(Application Programming Interface)是Rails提供的一种允许...

    rack教程(ruby)

    在Rack中,每个请求都携带了一个环境哈希表,包含了关于请求的所有信息,包括HTTP方法、URL路径、查询参数、请求头等。环境哈希表是Rack应用和Handler之间通信的主要方式。 ##### 2.1.1 Rack相关变量 Rack定义了一...

    获取request的参数

    它包含了关于请求的所有信息,包括方法(GET、POST等)、URL、头部、请求体以及参数。对于`获取request的参数`这个主题,我们将主要关注查询参数和POST数据。 1. **URL查询参数**: 当用户在URL中传递参数时,这些...

Global site tag (gtag.js) - Google Analytics