ruby-on-rails-3 – 如何拆分葡萄api应用程序?
发布时间:2020-12-16 19:41:06 所属栏目:百科 来源:网络整理
导读:在我看到的每个例子中,人们只能实现一个巨大的api.rb文件.例如: intridea/grape bloudraak/grape-sample-blog-api djones/grape-goliath-example 虽然这种方法工作正常,它可以很快变得拥挤和难以维护,所以我想拆分我的应用程序. 例如,我想从我的资源中拆分
在我看到的每个例子中,人们只能实现一个巨大的api.rb文件.例如:
> intridea/grape 虽然这种方法工作正常,它可以很快变得拥挤和难以维护,所以我想拆分我的应用程序. 例如,我想从我的资源中拆分实体,然后在不同的文件之间分割我的资源.例如: app - api api.rb - entities - weblog.rb - post.rb - comment.rb - resources - weblog.rb - post.rb - comment.rb 现在,api.rb将是这样的: require 'grape' module Blog class API < Grape::API prefix "api" end end app / api / entities / post.rb会是这样的: module Blog module Entities class Post < Grape::Entity root 'posts','posts' expose :id expose :content end end end app / api / resources / post.rb会是这样的: module Blog class API < Grape::API resource :posts do get do present Post.all,with: Blog::Entities::Post end desc "returns the payment method corresponding to a certain id" params do requires :id,:type => Integer,:desc => "Post id." end get ':id' do present Post.find(params[:id]),with: Blog::Entities::Post end end end end 当我们这样做时,我们会遇到以下消息:
解决方案(感谢dB.和我的同事) 您必须将结构更改为: app - api api.rb - resources - post_api.rb 然后,在post_api.rb中 module Blog class Resources::PostAPI < Grape::API resource :posts do get do present Post.all end end end end 最后,api.rb变成: require 'grape' module Blog class API < Grape::API prefix 'api' version 'v1',:using => :path format :json mount Blog::Resources::PostAPI => '/' end end 现在/ api / v1 /帖子应该工作:) 解决方法
post.rb中的类应该是Post,而不是API.那么你可以在类API中装载Post API.
class API < Grape::API mount Blog::Post => '/' end 为了避免混淆,我将Post发布在Resources命名空间中,或者将其重命名为PostAPI. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |