当前位置:  开发笔记 > 前端 > 正文

在Rails上设计RESTful公共API的最佳实践是什么?

如何解决《在Rails上设计RESTful公共API的最佳实践是什么?》经验,为你挑选了1个好方法。

Rails带有开箱即用的RESTful资源,但您是否将它们用于实际的公共API?如果是这样,您将如何完成API的版本控制,即example.com/api/v2/foo/bar



1> Ben Scofield..:

通常,我的应用程序的API确实构建在构成HTML界面的相同资源上.对于一些人(不是我),这可能只是使用来自脚手架生成器的代码 - 但无论我是自定义编写还是让生成器处理它,很少有实例我只将资源暴露给程序员API而不是最终用户视图.

对于我迄今为止构建的应用程序,版本控制并不是一个问题,但我可以想到两种方法来实现它.

1)您可以添加前缀为"v1","v2"等的路由,这些路由设置一个参数,然后您可以在控制器中访问该参数以指定要进行的处理:

在routes.rb中:

map.resources :posts, :path_prefix => '/:version'

在posts_controller.rb中

class PostsController < ApplicationController
  def index
    respond_to do |format|
      format.xml do
        if params[:version] == 'v1'
          # ...
        else
          # ...
        end
      end
    end
  end
end

2)您还可以考虑为每个版本添加自定义响应格式

在initializers/mime_types.rb中

Mime::Type.register_alias "application/xml", :v1
Mime::Type.register_alias "application/xml", :v2

在posts_controller.rb中

class PostsController < ApplicationController
  def index
    respond_to do |format|
      format.v1 do
        # ...
      end
      format.v2 do
        # ...
      end
    end
  end
end

前者会为您提供例如example.com/v1/posts.xml和example.com/v2/posts.xml的URL; 后者会为您提供例如example.com/posts.v1和example.com/posts.v2的网址

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有