繁体   English   中英

从JSON API请求中的某些字段中提取值。 (红宝石)

[英]Extracting values from certain fields in a json api request. (Ruby)

尝试在Udemy的API中提取字段“ searched_count”,但我不确定语法。

如果有人能指出我正确的方向,将不胜感激。 我正在使用Sinatra并使用net / http解析api请求。

require 'sinatra'
require 'net/http'
require 'json'
require 'openssl'

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

def get_search_count(term)

    url = 'https://www.udemy.com/api-2.0/search-suggestions?q=java'
    uri = URI(url)
    response = Net::HTTP.get(uri)
    JSON.parse(response)

    return response ["results"][0]["searched_count"]

end


get '/' do
    return get_search_count("java")
end

我正在尝试在网页上显示该号码。 运行它时,我没有收到任何错误,但是我无法确定我是否实际上从请求中收到了反馈。

如果有帮助,这是json文件的摘录:

{
    "results": [
        {
            "_class": "search_log",
            "id": 88,
            "phrase": "java",
            "searched_count": 3749730,
            "url": "/courses/search/?q=java"
        },

编辑:这是我尝试在网页上显示它。 位于index.erb中

<html>
    <head>
        <title><%= @title %></title>
    </head>
    <body>
        <h1><%= @headline %></h1>
        <p><%= @paragraph %></p>
        <form action="/action_page.php" method="get">
            Search Term: <input type="text" name="term"><br>
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

另外,我在web.rb中更新的代码:

require 'sinatra'
require 'net/http'
require 'json'
require 'openssl'

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

def get_search_count(term)
    url = 'https://www.udemy.com/api-2.0/search-suggestions?q=java'
    uri = URI(url)
    response = Net::HTTP.get(uri)
    parsed_response = JSON.parse(response)

    return parsed_response ["results"][0]["searched_count"]
end


get '/' do
    return get_search_count("java")
end

get '/term' do
    erb :index
end

get '/action_page.php' do
    return get_search_count(params[:name])
end

请把方法改成这样

  def get_search_count(term)
    url = 'https://www.udemy.com/api-2.0/search-suggestions?q=java'
    uri = URI(url)
    response = Net::HTTP.get(uri)
    parsed_response = JSON.parse(response)

    return parsed_response ["results"][0]["searched_count"]
end

注意:如果您正确获得响应,它将起作用。

暂无
暂无

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

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