【问题标题】: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 对象,类似于ActiveResource 或Flexirest。然而,问题在于这两个问题都让我无法更好地使用像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。当然,我可以只键入组件。只是会产生很多重复,并且这种方法会否定所有返回的上下文,比如关系。
-