Faraday Middleware 项目教程
项目的目录结构及介绍
Faraday Middleware 项目的目录结构如下:
faraday_middleware/
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE.md
├── README.md
├── Rakefile
├── faraday_middleware.gemspec
├── docs/
├── lib/
│ ├── faraday_middleware/
│ │ ├── instrumentation.rb
│ │ ├── oauth.rb
│ │ ├── parse_xml.rb
│ │ ├── parse_yaml.rb
│ │ ├── mashify.rb
│ │ ├── rashify.rb
│ │ └── version.rb
│ └── faraday_middleware.rb
├── script/
├── spec/
└── github/workflows/
目录介绍
- CONTRIBUTING.md: 贡献指南文件。
- Gemfile: Ruby 项目的依赖管理文件。
- LICENSE.md: 项目许可证文件。
- README.md: 项目说明文件。
- Rakefile: Ruby 项目的任务自动化文件。
- faraday_middleware.gemspec: 项目的 gem 规范文件。
- docs/: 项目文档目录。
- lib/: 项目核心代码目录,包含各种中间件的实现。
- script/: 脚本文件目录。
- spec/: 测试文件目录。
- github/workflows/: GitHub Actions 工作流配置目录。
项目的启动文件介绍
项目的启动文件是 lib/faraday_middleware.rb
,该文件是 Faraday Middleware 的主入口文件,负责加载所有中间件模块。
require 'faraday'
module FaradayMiddleware
autoload :Instrumentation, 'faraday_middleware/instrumentation'
autoload :OAuth, 'faraday_middleware/oauth'
autoload :ParseXml, 'faraday_middleware/parse_xml'
autoload :ParseYaml, 'faraday_middleware/parse_yaml'
autoload :Mashify, 'faraday_middleware/mashify'
autoload :Rashify, 'faraday_middleware/rashify'
end
项目的配置文件介绍
项目的配置文件主要包括 Gemfile
和 faraday_middleware.gemspec
。
Gemfile
Gemfile
用于管理项目的依赖:
source 'https://rubygems.org'
gem 'faraday', '~> 1.0'
gem 'activesupport', '~> 6.0'
gem 'simple_oauth', '~> 0.3'
gem 'multi_xml', '~> 0.6'
gem 'safe_yaml', '~> 1.0'
gem 'hashie', '~> 4.0'
gem 'rash_alt', '~> 0.4'
faraday_middleware.gemspec
faraday_middleware.gemspec
是项目的 gem 规范文件,定义了 gem 的元数据和依赖:
Gem::Specification.new do |spec|
spec.name = 'faraday_middleware'
spec.version = '0.14.0'
spec.authors = ['Erik Michaels-Ober', 'Wynn Netherland']
spec.email = ['sferik@gmail.com']
spec.summary = 'Various middleware for Faraday'
spec.description = 'Various middleware for Faraday'
spec.homepage = 'https://github.com/lostisland/faraday_middleware'
spec.license = 'MIT'
spec.files = `git ls-files`.split($/)
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
spec.require_paths = ['lib']
spec.add_dependency 'faraday', '~> 1.0'
spec.add_dependency 'activesupport', '~> 6.0'
spec.add_dependency 'simple_oauth', '~> 0.3'
spec.add_dependency 'multi_xml', '~> 0.