grape: A Ruby framework for rapid API development with great conventions.

1.Grape是运行在rack或与rails/sinatra配合使用的一种restful风格的ruby微框架,通过提供简单的DSL(领域特定语言)简化APIs开发.它内置支持mutiple formats(),subdomain/prefix restriction, versioning等通用约束(ruby约束高于配置).详见http://intridea.github.io/grape/.

2.安装Grape

gem install grape

或者编辑Gemfile.

gem "grape"

然后

bundle install

3.基础用法

Grape APIs和Rack应用继承自Grape::API.

下面展示一段用Grape写的简单的twitter API:

module Twitter
  class API < Grape::API
    version ‘v1‘, using: :header, vendor: ‘twitter‘
    format :json
    prefix :api

    helpers do
      def current_user
        @current_user ||= User.authorize!(env)
      end

      def authenticate!
        error!(‘401 Unauthorized‘, 401) unless current_user
      end
    end

    resource :statuses do
      desc "Return a public timeline."
      get :public_timeline do
        Status.limit(20)
      end

      desc "Return a personal timeline."
      get :home_timeline do
        authenticate!
        current_user.statuses.limit(20)
      end

      desc "Return a status."
      params do
        requires :id, type: Integer, desc: "Status id."
      end
      route_param :id do
        get do
          Status.find(params[:id])
        end
      end

      desc "Create a status."
      params do
        requires :status, type: String, desc: "Your status."
      end
      post do
        authenticate!
        Status.create!({
          user: current_user,
          text: params[:status]
        })
      end

      desc "Update a status."
      params do
        requires :id, type: String, desc: "Status ID."
        requires :status, type: String, desc: "Your status."
      end
      put ‘:id‘ do
        authenticate!
        current_user.statuses.find(params[:id]).update({
          user: current_user,
          text: params[:status]
        })
      end

      desc "Delete a status."
      params do
        requires :id, type: String, desc: "Status ID."
      end
      delete ‘:id‘ do
        authenticate!
        current_user.statuses.find(params[:id]).destroy
      end
    end
  end
end

关于上面代码的简单解释:

3.调用API

使用mount方法:

class Twitter::API < Grape::API
  mount Twitter::APIv1
  mount Twitter::APIv2
end
class Twitter::API < Grape::API
  mount Twitter::APIv1 => ‘/v1‘
end

4.为API添加描述

desc "Returns your public timeline." do
  detail ‘more details‘
  params  API::Entities::Status.documentation
  success API::Entities::Entity
  failure [[401, ‘Unauthorized‘, "Entities::Error"]]
  named ‘My named route‘
  headers [XAuthToken: {
             description: ‘Valdates your identity‘,
             required: true
           },
           XOptionalHeader: {
             description: ‘Not really needed‘,
            required: false
           }
          ]
end
get :public_timeline do
  Status.limit(20)
end

details:更加详细的描述

params:直接从实体定义参数

success:实体对象的默认使用路由

failure:请求失败返回的http代码

(====未完=====)

时间: 2024-12-05 13:12:27

grape: A Ruby framework for rapid API development with great conventions.的相关文章

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

8 REST Framework 实现Web API 1

1 参考博客: http://blog.csdn.net/SVALBARDKSY/article/details/50548073 2  准备工作 1. 环境 Python: Python 3.5 Django: 1.9 django-filter: 0.11.0 djangorestframework: 3.3.1 2.准备工作 安装库 pip install django pip install djangorestframework pip install django-filter 创建

go web framework gin group api 设计

假如让你来设计group api, 你该怎么设计呢? group api 和普通api的区别在于前缀不同,如果group api的版本为v1.0 那么相对应的url为/v1.0/xxx, 如果是普通api的话那么api相对应的版本为/xxx 在gin web framework 中设计的原则也是以相对路径来区分. // RouterGroup is used internally to configure router, a RouterGroup is associated with // a

Robot Framework自动化测试---Selenium API

一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internetexplorer Internet Explorer ie googlechrome Google Chrome gc chrome opera Opera phantomjs PhantomJS htmlunit HTMLUnit htmlunitwithjs HTMLUnit with Javas

Django Rest framework Swagger生成api文档

关于swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: - Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. - Swagger 可以生成客户端SDK代码用于各种不同的平台上的实现. - Swagger 文件可以在许多不同的平台上从代码注释中自动生成. - Swagger 有一个强大的社区,里面有许多强悍的贡献者. 下面就实战django rest swagger为drf生成api接口文档 https://

.Net Framework下安装api swagger

1.打开nuget安装Swashbuckle 2.在项目中设置 3.装完之后会自动生成Swagger.Config 4.修改Swagger.Config 5.运行http://localhost:44339/swagger,就能看到如下画面: 原文地址:https://www.cnblogs.com/jackielyj/p/12111178.html

Entity Framework Code First (二)Custom Conventions

------------------------------------------------------------------------------------------------------------ 注意:以下所讨论的功能或 API 等只针对 Entity Framework 6 ,如果你使用早期版本,可能部分或全部功能不起作用! --------------------------------------------------------------------------

CUBA Platform —— 开源的、可靠的企业级应用开发利器

原文:CUBA Platform: An Open-Source Java Framework for Rapid Application Development 翻译:CUBA China CUBA-Platform 官方网站 : https://www.cuba-platform.com CUBA China 官方网站 : http://cuba-platform.cn 欢迎转载,转载请注明来源: https://www.cnblogs.com/cubacn/p/cubaplatform1.

CUBA Platform

-- 开源的.可靠的企业级应用开发利器 原文:CUBA Platform: An Open-Source Java Framework for Rapid Application Development 翻译:CUBA China CUBA-Platform 官方网站:https://www.cuba-platform.com CUBA China 官方网站:http://cuba-platform.cn 前言                  CUBA China是由多名具有丰富的行业软件.工