`

Rails route constraints api 介绍

阅读更多

Rails 为route的路由约束提供了constraints 方法,具体的使用如下:

  • 限制IP地址
    constraints(:ip => /192.168.\d+.\d+/) do
      resources :posts
    end
     可以提供一个ip或者一个ip地址的范围进行限制,一旦检测到用户的ip地址符合限制范围,则会告知不存在此route。

  • 匹配动态请求

    这个例子是控制route只能被iPhone访问。
    1,第一种做法,传递block,如下:
    constraints(lambda { |req| req.env["HTTP_USER_AGENT"] =~ /iPhone/ }) do
      resources :iphones
    end
    通过传入一个block的方式来匹配HTTP_USER_AGENT是否匹配iPhone,如果是true则可以访问iphones这个资源路径。

    但是第一方法比较粗暴,代码不够整洁,如果逻辑复杂,就显得啰嗦,所以可以选择第二种方法

    2,第二种做法,传递一个Class,并且在这Class必须实现matches? 方法。

    我们事先在ib/constraints 定义一个Iphone Class:
    class Iphone
      def self.matches?(request)
         request.env["HTTP_USER_AGENT"] =~ /iPhone/
      end
    end

    接着在把第一方法的代码修改为: 
    constraints(Iphone) do
      resources :iphones
    end
    
    这样我们就可以把逻辑全部放在Iphone了

参考资料:  

   例子实现:  https://gist.github.com/bsodmike/1369419

   Rails Guide: http://guides.rubyonrails.org/routing.html#segment-constraints

   同时如果你觉得在本文中介绍太简单,可以移步官方源码实现,并且附带有此api的详细guides:

  https://github.com/rails/rails/blob/7c7fb3a862651d87c4071e40a1799b973f626b11/actionpack/lib/action_dispatch/routing/mapper.rb#L693

 

 

 

 

0
2
分享到:
评论

相关推荐

    [Ruby on Rails][API][Rails 5.x] 01. Rails 与 Web API 介绍

    [Ruby_on_Rails][API][Rails_5.x]__01._Rails_與_Web_API_介紹

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    rails-api-4.0.0

    《Rails API 4.0.0:Ruby on Rails框架的API设计与开发指南》 Rails API 4.0.0是Ruby on Rails框架的一个版本,专门针对构建应用程序接口(APIs)进行了优化。Ruby on Rails是由David Heinemeier Hansson创建的开源...

    rails api(文档)

    Rails API 是一个专门为构建应用程序接口(API)设计的Ruby on Rails框架版本。它专注于提供一套轻量级的工具,使得开发者能够快速、高效地创建RESTful API服务。Rails API的目的是为了提高性能,并减小API服务器与...

    ruby on rails 2.3.5 api html版

    Ruby on Rails 2.3.5 API HTML版是针对该版本框架的重要开发参考资料,它包含了详细的API文档,帮助开发者理解并有效地使用Rails 2.3.5进行Web应用开发。Rails是一个基于Ruby语言的开源Web应用程序框架,它遵循模型-...

    ruby on rails api

    标题“ruby on rails api”表明我们将讨论的是Rails框架的API(Application Programming Interface),这是一系列预先定义好的函数、类和模块,允许开发者通过调用来实现特定的功能,无需从头编写所有代码。Rails ...

    Ruby on Rails4 api.chm

    Ruby on Rails4 api.chm ruby on rails 4 最新api chm版本,方便大家阅览!

    rails 2.1 CHM api文档

    rails 2.1的api文档,chm格式,官方最新版

    railsAPI

    Rails API 是一个强大的框架,用于构建高效、可扩展的Web应用程序。它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式,使得开发者可以轻松地处理数据存储、用户界面和业务逻辑。Rails API 特别适用于构建...

    rails 3.2 API

    Rails 3.2 API 是一个重要的开发资源,主要用于Ruby on Rails框架的开发。Rails是基于Ruby语言的一个开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,广泛应用于构建动态网站和Web应用程序。Rails ...

    rails 2.2.2 API

    Rails 2.2.2 API 是一个针对 Ruby on Rails 框架的版本 2.2.2 的接口文档,它是开发人员的重要参考资料,用于理解并有效地使用该框架的各项功能。Ruby on Rails(RoR)是由 David Heinemeier Hansson 创建的一个开源...

    Api-rails5_api_tutorial.zip

    Api-rails5_api_tutorial.zip,了解如何在michael hartl的rails 5教程上构建一个现代api立即在rails应用程序中构建一个api!(Rails 5版本),一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web...

    rails-api

    个人收藏的rails api

    rails-api-base:Rails 5 RESTful API模板

    Rails Api基地 介绍 该项目的目标是: 一个讨论Rails设置和开发的api示例。 从其开始项目的基本模板。 规格摘要: RESTful API。 api版本。 Notes应用示例。 模式和良好做法。 用户管理。 版本到期。 国际...

    Rails API

    **Ruby on Rails API** 是一个详尽的文档资源,它为开发者提供了关于Ruby on Rails框架的全面信息。这个API文档是用rdoc工具从Rails的源代码生成的,旨在帮助开发者理解和利用Rails的强大功能。CHM(Compiled ...

    rails3 api chm格式

    2. "Rails3 api.chm":这是Rails 3的主要API文档,它应该包含了关于控制器、模型、视图、路由、数据库交互、辅助方法、插件、测试等所有关键部分的详细信息。开发者可以通过搜索、索引等功能快速查找所需的信息。 ...

    好用的rails 2.0 Api 文档

    Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails 2.0版本时更好地理解和利用其框架功能。Ruby on Rails(简称Rails)是一个开源的Web应用框架,它遵循MVC(模型-...

    rails api

    rails的api文档,方便你查看

    rails_5_api_tutorial:使用Swagger UI构建Perfect Rails 5 API Only应用程序并记录基于Rails的REST API

    构建Perfect Rails 5 API Only应用得益于作为Rails 5核心一部分提供的新的rails-api gem,Rails现在是快速,轻松构建精简API的理想选择。 到目前为止,可以说,在Ruby中创建API的最佳选择是Grape,尽管Grape仍然是一...

Global site tag (gtag.js) - Google Analytics