繁体   English   中英

如何在 ruby 上获得 API 请求的响应?

[英]How can I get the response of request of API on ruby?

我目前正在做一个项目,我必须制定一个特定的方法。 通过使用这种方法,我想得到 Json 的结果。 url 完全没问题,当我被 Curl -get 命令击中时,它返回 Json。 它返回类似这样的内容 [{id: "~~~", name: "~~~"}, {id: "===", name: "==="}]

  def api(url)
    uri = URI.parse(url)
    req = Net::HTTP::Get.new(uri.request_uri)
    https = Net::HTTP.new(uri.host, uri.port)
    https.use_ssl = true
    res = https.request(req)
    res.to_json ( i also tried res.body)
  end

我想解决这个问题,但我没有发现问题。

*添加

我刚刚发现 res = https.request(req) 不起作用。 print res 什么也不返回。

在这个 class 中,我添加了这些要求,但这里可能有问题。

  require 'json'
  require 'net/http'
  require 'uri'

您可以解析响应正文:

JSON.parse(res.body)

从纯 IRB session 中的 JSONPlacehoder 服务获取结果的示例。

irb(main):001:0> require 'json'
=> true
irb(main):002:0>   require 'net/http'
=> true
irb(main):003:0>   require 'uri'
=> false
irb(main):004:1* def api(url)
irb(main):005:1*   uri = URI.parse(url)
irb(main):006:1*   req = Net::HTTP::Get.new(uri.request_uri)
irb(main):007:1*   https = Net::HTTP.new(uri.host, uri.port)
irb(main):008:1*   https.use_ssl = true
irb(main):009:1*   res = https.request(req)
irb(main):010:1*   JSON.parse(res.body)
irb(main):011:0> end
=> :api
irb(main):012:0> url = 'https://jsonplaceholder.typicode.com/todos'
irb(main):013:0> api(url)
=> [{"userId"=>1, "id"=>1, "title"=>"delectus aut autem", "completed"=>false}, {"userId"=>1, "id"=>2, "title"=>"quis ut nam facilis et officia qui", "completed"=>false}, {"userId"=>1, "id"=>3, "title"=>"fugiat veniam minus", "completed"=>false}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM