服务器之家

服务器之家 > 正文

Ruby on Rails中的ActiveResource使用详解

时间:2020-05-05 11:39     来源/作者:脚本之家

当 HTTP 响应是一个与存在的格式不同的格式时(XML 和 JSON),需要某些额外的格式解析,创一个你惯用的格式,并在类别中使用它。惯用的格式应当实作下列方法:extension, mime_type,
    encode 以及 decode。

    

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module ActiveResource
   module Formats
    module Extend
     module CSVFormat
      extend self
 
      def extension
       'csv'
      end
 
      def mime_type
       'text/csv'
      end
 
      def encode(hash, options = nil)
       # 数据以新格式编码并返回
      end
 
      def decode(csv)
       # 数据以新格式解码并返回
      end
     end
    end
   end
  end
 
  class User < ActiveResource::Base
   self.format = ActiveResource::Formats::Extend::CSVFormat
 
   ...
  end

    若 HTTP 请求应当不扩展发送时,覆写 ActiveResource::Base 的 element_path 及 collection_path 方法,并移除扩展的部分。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
class User < ActiveResource::Base
 ...
 
 def self.collection_path(prefix_options = {}, query_options = nil)
  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
 end
 
 def self.element_path(id, prefix_options = {}, query_options = nil)
  prefix_options, query_options = split_options(prefix_options) if query_options.nil?
  "#{prefix(prefix_options)}#{collection_name}/#{URI.parser.escape id.to_s}#{query_string(query_options)}"
 end
end

    如有任何改动网址的需求时,这些方法也可以被覆写。

相关文章

热门资讯

沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
返回顶部