【问题标题】:Is there a gem for consuming JSON-API formatted RESTful json api's | Ruby on Rails [closed]是否有使用 JSON-API 格式的 RESTful json api 的 gem? Ruby on Rails [关闭]
【发布时间】:2016-09-13 22:27:48
【问题描述】:

是否有在 Rails 应用程序中使用和解析JSON:API format 的库。我觉得一旦返回请求,模型对象应该看起来像 ActiveRecord 对象,类似于ActiveResourceFlexirest。然而,问题在于这两个问题都让我无法更好地使用像Faraday 这样更通用的http 适配器。我不得不做一些花哨的处理来提取深度嵌套的数组和哈希,更不用说表示关联了。

我想知道其他人是如何处理这种情况的。我认为我遇到的部分问题是“Json api”对于谷歌来说有点棘手,因为相关内容的混乱。

【问题讨论】:

标签: ruby-on-rails ruby json rest json-api


【解决方案1】:

json_api_client 是我所知道的最强大、功能最齐全的客户端,它涉及到 JSON:API 的所有部分的自动解析和利用。它绝对还没有完全成熟(不是线程安全的,所有结果都作为集合返回 - 包括单个finds,自定义选项仅限于为某些模块/方法注入完全替换)

但这对于非常标准的用例来说非常棒 - 特别是如果您有权编写 API 的 URL 结构以匹配该库的预期。

【讨论】:

    【解决方案2】:

    我目前正在使用 rest-client 来使用 API,并使用 json-api-vanilla 来解析响应。非常容易使用:

    response = RestClient.get(url, headers = authorization_header)
    doc = JSON::Api::Vanilla.parse(response.body)
    
    doc.data[0].comments[1].author.last_name
    

    【讨论】:

      【解决方案3】:

      对于我的项目,我使用 rest-client https://github.com/rest-client/rest-client 易于使用的一些示例需要

      'rest-client'
      
      RestClient.get 'http://example.com/resource'
      
      RestClient.get 'http://example.com/resource', {:params => {:id => 50, 'foo' => 'bar'}}
      
      RestClient.get 'https://user:password@example.com/private/resource', {:accept => :json}
      
      RestClient.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' }
      
      RestClient.delete 'http://example.com/resource'
      

      并且可以像这样解析JSON

      resource = RestClient::Resource.new 'http://example.com/resource'
      json = JSON.parse(resource)
      

      【讨论】:

      • 感谢您的回复。
      • 真正的问题是你从一个用 jsonapi-resource 格式化的 api 得到什么。结帐jsonapi.org。当然,我可以只键入组件。只是会产生很多重复,并且这种方法会否定所有返回的上下文,比如关系。
      • 你在尝试 JSONAPI::Resources
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多