`

grape接口开发

 
阅读更多
第一步按照github上的文件配置https://github.com/intridea/grape
(1)gem 'grape' 然后bundle install
(2)在config.ru里面添加 run Twitter::API
(3)在application.rb里面添加两句话
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
(4)在路由里面添加 mount Twitter::API => '/'
完成以上几个步骤基本上就可以去写代码了,需要注意的是 如果例子当中的module Twitter
class API < Grape::API end end的Twitter是我们自己定义的文件夹,则(2)(4)里面就去掉Twitter就可以了。也就是只有一个api.rb文件。里面为class API < Grape::API end
我做的步骤是
创建一个文件夹api,然后在这个文件夹下分别创建一个项目自己项目名字project的文件夹用来放每一个接口的方法,创建一个公共的api.rb文件也就是例子中的api,在创建一个helpers.rb文件专门用来放一些公共方法。
使用:在api里面主要是一堆mount,把helpers.rb里面的类 以及project下的类mount进来

require 'helpers'
class API < Grape::API
 
  version 'v1', using: :header, vendor: 'project'
  format :json
  prefix :api

  helpers ProjectInterface::APIHelpers
  mount Project::LoginOauth
  mount Project::PhoneRecord
  mount Project::UserInfo
end
这里值得注意的是需要把require 一下helpers 不然 直接helpers ProjectInterface::APIHelpers会报错

helpers.rb的文件结构:
require "uuidtools"

module ProjectInterface
  module APIHelpers
    def warden
      env['warden']
    end
......
end
end

在project文件夹下的user_info.rb文件结构:
module Project
  class UserInfo < Grape::API
     format :json
     helpers ::ProjectInterface::APIHelpers

end
end
这样之后差不多就可以定义自己的路由,请求的方法,参数什么的
desc 'Returns token.'
      params do
        requires :login_name, type: String, desc: "login_name."
        requires :password, type: String, desc: "password."
      end
接口路由
resource :users do
   post :get_token do
     authenticate!//helpers里面的方法
   end
end
然后就是curl 的测试。curl -X POST -H 'Content-Type: application/json' -d '{"login_name": "admin","password": "123456"}'http://localhost:3000/api/users/get_token
上面的curl是一句话。需要注意的是post请求都是以-d方式传参数,get以问号方式传递。然后在每个接口路由前面都会自动加了一个api源于前面的一句prefix :api
以上个人总结,大虾指正
分享到:
评论

相关推荐

    rails+grape+swagger+devise+capistrano 简单融合示例

    在这个项目中,Swagger与Grape结合,用于文档化API接口。Swagger通过YAML或JSON文件来定义API的结构,提供了一个交互式的界面,使得开发者可以实时测试API端点,查看返回数据,以及理解API的工作方式。这对于开发、...

    使用Rails4Devise和Grape验证API_JavaScript_CSS_下载.zip

    Grape允许开发者定义简单的DSL(领域特定语言)来描述API接口。它可以轻松地添加版本控制、错误处理和参数验证。在这个项目中,Grape可能被用来处理用户认证相关的API请求,比如获取或刷新访问令牌、验证用户凭据等...

    grape:一个自以为是的,数据优先的图形Clojure库,用于构建HTTP API

    在实际开发中,Grape 可能会包含以下组件和功能: 1. **路由定义**:定义资源的 URL 结构,将 HTTP 请求映射到相应的处理函数。 2. **请求处理**:编写 Clojure 函数来处理不同的 HTTP 请求方法,如 GET、POST 等。 ...

    Ruby-grapeswagger添加swagger兼容的文档至你的GrapeAPI中

    Swagger,现在被称为OpenAPI规范,是业界广泛接受的API描述语言,它允许开发者以JSON格式定义API接口,方便API的设计、开发、测试和文档化。下面将详细解释如何使用`grape-swagger`将Swagger兼容的文档集成到你的...

    Ruby-使用Goliath实现高性能微服务API完整模板

    Goliath是一个轻量级、非阻塞的HTTP服务器框架,它允许开发者以更高效的方式处理高并发请求,而Grape则是一个用于构建RESTful API的库,提供了简洁的接口来定义路由和数据验证。这个项目是基于Goliath 1.0和Grape的...

    Java 程序练习二.pdf

    案例中的类和接口设计体现了这些概念,如`Fruit`接口为其他类提供继承基础,`Apple`、`Grape`和`Strawberry`类的实现展示了继承,而多态性则体现在`Fruit`接口的方法实现上。 通过这个案例,你可以深入了解Java的...

    简单工厂模式PPT学习教案.pptx

    3. **ConcreteProduct(具体产品)**:`Apple`、`Grape`和`Strawberry`,实现了产品接口,提供了具体的行为实现。 在实际应用中,简单工厂模式常用于那些产品类具有共同接口,并且客户端需要根据特定条件动态选择...

    Grape-Gathering-Database:关于建立获取葡萄的数据库

    下面我们将详细探讨Java在数据库开发中的应用以及构建这样的系统可能涉及的关键技术和步骤。 1. 数据库选择:首先,我们需要选择一个适合的数据库管理系统(DBMS)。Java与许多类型的数据库兼容,如MySQL、...

    groovy 经典入门 通俗易懂

    - Groovy完全支持面向对象编程,包括类、继承、接口、封装和多态。 - 类定义可以使用`class`关键字,与Java类似,但更简洁。例如,你可以直接在类体中定义方法,无需`public`或`void`等修饰符。 - Groovy支持闭包...

    java工厂模式详细讲解

    在工厂方法模式中,`Fruit` 接口可以作为产品的接口,而每个具体的水果类(如 `Apple`、`Grape`、`Strawberry`)则作为具体的产品类。这种方式增强了代码的灵活性和可扩展性。 3. **抽象工厂模式(Abstract Factory...

    简单工厂模式论文

    每个具体的水果类(如`Apple`、`Grape`和`Strawberry`)都实现了`Fruit`接口,以表示它们各自具有这些通用行为。 在简单工厂模式中,我们需要一个工厂类来负责创建这些水果对象。例如,我们可以创建一个名为`...

    对一些Ruby网络微框架进行基准测试,只是为了好玩___下载.zip

    Grape专注于API开发,提供了构建RESTful API的强大工具。它允许你定义端点、参数验证和各种HTTP响应。Grape的设计理念是模块化,因此可以轻松扩展和维护。 4. **Lotus::Router**: Lotus是Ruby的一个全栈框架,而...

    JAVA设计模式

    例如,假设我们需要创建不同的水果类(如苹果、葡萄等),这些类具有相同的接口(如`FruitIF`),可以通过一个工厂类(如`FruitFactory`)来创建具体的水果对象,而无需在客户端代码中指定具体类。 ```java ...

    java简单工厂模式文档简单汇总

    在代码中,`Apple`和`Grape`类都是实现了`Fruit`接口的具体产品,它们各自有自己的特性和方法,如`Apple`的`treeAge`属性和`Grape`的`seedless`属性。 使用简单工厂模式的好处包括: - **封装性**:客户端代码无需...

    groovy-binary-1.6.4

    3. ** Grape**:Grape是Groovy的依赖管理工具,类似于Java的Maven或Gradle,允许你在运行时自动下载并管理依赖库。 4. **GroovyShell** 和 **GroovyConsole**:这两个工具提供了交互式的环境来测试和运行Groovy代码...

    ios Objective-C分类 (category),字符串的拆分(componentsSeparatedByCharactersInSet)

    1. 定义分类接口:在`.h`文件中声明要添加的方法。 ```objc // TestCategory.h #import @interface NSString (TestCategory) - (NSArray *)splitStringWithCharactersInSet:(NSCharacterSet *)separator; @end ```...

    Groovy&Grails准备,收集的Groovy与Grails的书籍

    3. **Groovy Shell和 Grape**:Groovy Shell允许交互式地执行Groovy代码,Grape是Groovy的依赖管理系统,用于自动下载和管理项目所需的库。 4. **闭包**:Groovy中的闭包是一种强大的功能,类似于函数引用,可以作为...

    groovy-api-chm

    Groovy API CHM文件是Groovy官方提供的开发文档,通常包含了Groovy语言的详细接口、类库以及方法的说明,是开发者学习和使用Groovy的重要参考资料。 Groovy API主要涵盖以下几个核心知识点: 1. **语法特性**:...

    常见的23种设计模式的实例和名称,问题解决方案的描述

    1995年出版的《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书标志着设计模式在软件开发领域的正式确立。这本书的四位作者Erich Gamma、Richard Helm...

    软件体系结构与设计模式期末复习.docx

    // Grape类也实现了Fruit接口 public class Grape implements Fruit { public void plant() { System.out.println("葡萄正在发芽"); } public void grow() { System.out.println("葡萄正在生长"); } public void ...

Global site tag (gtag.js) - Google Analytics