首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grape:在使用grape-entity公开集合时,如何从XML响应中删除多余的根元素<hash>?

Grape:在使用grape-entity公开集合时,如何从XML响应中删除多余的根元素<hash>?
EN

Stack Overflow用户
提问于 2016-01-20 20:38:41
回答 1查看 761关注 0票数 0

我正在使用grape (0.14.0)和grape-entity (0.5.0)在我的Rails (4.2.5)应用程序中创建一个XML API。每当我在Grape::Entity类中指定一个显式根元素时,XML响应就会被包装在一个不需要的根元素<hash>中。我怎样才能摆脱它?

示例代码

代码语言:javascript
复制
# app/models/partner.rb
class Partner < ActiveRecord::Base
  #  company    :string
  #  name       :string
  #  secret     :string
end

# app/api/partners.rb
class Partners < Grape::API
  version 'v1', using: :path
  prefix :api
  format :xml

  resource :partners do
    get do
      present Partner.all, with: PartnerEntity
    end
  end
end

# app/api/partner_entity.rb
class PartnerEntity < Grape::Entity
  root 'partners', 'partner'
  expose :company
  expose :name
  expose :id
end

# Create a partner 
Partner.create!(name: 'A Name', company: 'A Company', secret: 'A secret')

结果

代码语言:javascript
复制
# GET /api/v1/partners.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<hash>
  <partners type="array">
    <partner>
      <company>A Company</company>
      <name>A Name</name>
      <id type="integer">1</id>
    </partner>
  </partners>
</hash>

在PartnerEntity中不带根目录的结果

代码语言:javascript
复制
# GET /api/v1/partners.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<partner-entities type="array">
  <partner-entity>
    <company>A Company</company>
    <name>A Name</name>
    <id type="integer">2</id>
  </partner-entity>
</partner-entities>

因为我需要显式地命名我的根元素,所以我不能没有root。

EN

回答 1

Stack Overflow用户

发布于 2016-01-21 00:42:41

你找到这个帖子了吗?XML format is incorrect?

它包含一个想法,你可以用哪种方式覆盖它。Use custom formetter to redefine XML root

代码语言:javascript
复制
 class API < Grape::API
   content_type :xml, 'application/xml'
   formatter :xml, Proc.new { |object|
     object[object.keys.first].to_xml :root => object.keys.first
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34900323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档