当前位置: 首页 > news >正文

Her自定义请求:5种方式扩展你的API调用

Her自定义请求:5种方式扩展你的API调用

【免费下载链接】herHer is an ORM (Object Relational Mapper) that maps REST resources to Ruby objects. It is designed to build applications that are powered by a RESTful API instead of a database.项目地址: https://gitcode.com/gh_mirrors/he/her

Her作为一款强大的Ruby ORM工具,允许开发者将REST资源映射为Ruby对象,轻松构建基于RESTful API的应用。本文将分享5种实用方法,帮助你灵活扩展Her的API调用能力,满足复杂业务需求。

1. 自定义HTTP方法:快速定义专用接口

Her提供了简洁的自定义HTTP方法API,让你为模型添加专用接口。通过custom_getcustom_post等方法,无需复杂配置即可创建自定义端点调用。

例如,为用户模型添加获取热门用户和最近活动的接口:

class User include Her::Model custom_get :popular, :recent custom_post :activate end

调用方式直观简洁:

# 获取热门用户列表 @popular_users = User.popular # 激活用户账户 @user = User.activate(id: 123)

这些方法定义在lib/her/model/http.rb中,支持标准HTTP动词,满足各类API交互场景。

2. 中间件栈配置:打造个性化请求流程

Her基于Faraday构建HTTP请求系统,允许你完全定制中间件栈,控制请求/响应处理流程。通过setup块访问Faraday连接对象,灵活添加、移除或替换中间件。

基础配置示例:

Her::API.setup url: "https://api.example.com" do |c| # 添加JSON解析中间件 c.use Her::Middleware::FirstLevelParseJSON # 添加Accept头中间件 c.use Her::Middleware::AcceptJSON # 使用Net::HTTP适配器 c.adapter Faraday.default_adapter end

Her提供多种内置中间件,如lib/her/middleware/json_api_parser.rb用于JSON API规范解析,lib/her/middleware/second_level_parse_json.rb处理嵌套数据结构。你也可以开发自定义中间件,实现认证、缓存、日志等功能。

3. 认证中间件:安全访问受保护资源

Her默认不提供认证功能,但通过中间件机制可轻松实现各类认证方案。常见的做法是添加请求头认证中间件:

Her::API.setup url: "https://api.example.com" do |c| c.use Her::Middleware::AcceptJSON c.use Her::Middleware::FirstLevelParseJSON # 添加认证中间件 c.use Faraday::Request::Authorization do |request| "Bearer #{current_user.api_token}" end c.adapter Faraday.default_adapter end

对于OAuth等复杂认证,可结合faraday_middlewaresimple_oauthgems实现更高级的认证流程,确保API调用安全可靠。

4. 自定义解析逻辑:适配独特API响应格式

当API响应格式不符合标准时,Her允许你通过两种方式自定义解析逻辑:

使用自定义中间件

创建响应解析中间件,设置env[:body]为包含:data:errors:metadata键的哈希:

class CustomParser < Faraday::Middleware def call(env) @app.call(env).on_complete do |response_env| parsed = JSON.parse(response_env[:body]) response_env[:body] = { data: parsed['result'], errors: parsed['errors'], metadata: { total: parsed['total'] } } end end end # 在API设置中使用 Her::API.setup url: "https://api.example.com" do |c| c.use CustomParser c.adapter Faraday.default_adapter end

模型级解析

通过重写模型的parse方法自定义单个模型的解析逻辑,详细实现可参考lib/her/model/parse.rb。

5. 请求缓存:提升应用性能与响应速度

利用Faraday中间件生态系统,可轻松为Her添加请求缓存功能。结合faraday_middleware和缓存存储(如Memcached):

# 添加到Gemfile gem "faraday_middleware" gem "memcached" # 配置缓存中间件 Her::API.setup url: "https://api.example.com" do |c| c.use Her::Middleware::AcceptJSON c.use Her::Middleware::FirstLevelParseJSON # 添加缓存中间件 c.use FaradayMiddleware::Cache, Memcached.new('localhost:11211') c.adapter Faraday.default_adapter end

缓存策略可根据需求定制,有效减少重复请求,提升应用性能,特别适合频繁访问且不常变化的资源。

总结:灵活扩展Her的API调用能力

通过自定义HTTP方法、中间件栈配置、认证中间件、解析逻辑和请求缓存这5种方式,你可以充分扩展Her的API调用能力,使其完美适配各类RESTful API。无论是简单的端点扩展还是复杂的请求流程定制,Her都提供了简洁而强大的接口,帮助你构建高效、灵活的API客户端应用。

开始使用Her时,可通过克隆仓库获取完整代码:

git clone https://gitcode.com/gh_mirrors/he/her

探索lib/her/api.rb和lib/her/model/http.rb中的实现细节,发现更多扩展可能性,打造符合特定业务需求的API交互层。

【免费下载链接】herHer is an ORM (Object Relational Mapper) that maps REST resources to Ruby objects. It is designed to build applications that are powered by a RESTful API instead of a database.项目地址: https://gitcode.com/gh_mirrors/he/her

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/727311/

相关文章:

  • 避坑指南:UE动画蓝图状态机变量设置与外部调用的那些事儿
  • 2026年深度改写模式和普通模式效果对比:降AI力度与文本保留度横评
  • 网盘直链下载助手终极指南:八大网盘一键获取真实下载链接,告别限速烦恼
  • 4月30日成都地区重钢产无缝钢管(8163-20#;外径38-114mm)批发价格 - 四川盛世钢联营销中心
  • 抖音直播数据采集终极指南:高效应对匿名用户与隐私保护挑战
  • 罗兰艺境“1+11”GEO技术落地,赋能上海制造隐形冠军 - 罗兰艺境GEO
  • Prusa-Firmware配置与定制化:打造专属3D打印体验
  • 保姆级教程:手把手教你用ADB Dumpsys命令深度分析Android应用状态(附查找秘籍)
  • ArchivePasswordTestTool:3分钟快速找回遗忘压缩包密码的终极免费方案
  • 智能网页数据抓取工具WebSeek的技术解析与应用
  • 告别白模!用Unity ProBuilder给你的场景原型快速上色与赋予材质(2021/2022版通用)
  • 使用Taotoken管理多项目API密钥并设置访问权限与审计
  • 全国冲孔板厂家排行:品质与供货能力实测对比 - 奔跑123
  • AI写论文看这里!4款AI论文写作工具,解决写期刊论文的难题!
  • Sakana!石蒜模拟器完全指南:从拖拽弹跳到陀螺仪控制的10个核心功能解析
  • 告别乱码!在统信UOS上为Wine配置完美中文字体的保姆级指南(以安装Apabi阅读器为例)
  • 灾难恢复专家稀缺报告
  • 如何快速集成gpt-repository-loader与重构影响缓解工具:完整API指南
  • 2026年AI模型接口加速站亲测:OpenAI兼容、计费透明与稳定性权衡全解析
  • 如何将Faust信号处理语言部署到嵌入式系统:ESP32、Teensy与Bela平台实战指南
  • Mac存储空间终极拯救方案:Pearcleaner与AppCleaner深度对比评测
  • House of storm
  • 国内穿孔板厂家实力排行 基于场景适配与供货能力评定 - 奔跑123
  • NPU内核开发优化与AscendKernelGen实践
  • 如何快速搭建docker-wechatbot-webhook:5分钟从零到实战
  • 5个能让你从总监办公室笑着走出来的救命命令
  • 2026年福建消防工程技术机构精选名单 - 品牌策略师
  • 猫抓Cat-Catch完整教程:5分钟学会浏览器资源嗅探与下载
  • 如何让微信聊天记录成为你的数字记忆宝库?
  • (6/10)电子技术-杂七杂八