Ruby 在Grape中声明资源路径的语法
我想澄清一下在Grape中声明API资源路径的语法。下面的示例声明了资源路径“/items”、“/items/:id”、“/objects”和“/objects/:id”。我不明白的是,为什么“/items/:id”的定义返回nullRuby 在Grape中声明资源路径的语法,ruby,grape,Ruby,Grape,我想澄清一下在Grape中声明API资源路径的语法。下面的示例声明了资源路径“/items”、“/items/:id”、“/objects”和“/objects/:id”。我不明白的是,为什么“/items/:id”的定义返回null class API < Grape::API format :json default_format :json rescue_from :all, backtrace: true resource :items do de
class API < Grape::API
format :json
default_format :json
rescue_from :all, backtrace: true
resource :items do
desc "Returns an array of all items."
get do
ITEMS.find.to_a
end
desc "Returns an item by its id."
get '/:id' do
# hardcoding the document id returns the correct document
# ITEMS.find_one( "item_id" => 2519 )
# using the path parameter :id returns null, why???
ITEMS.find_one( "item_id" => params[:id] )
end
end
resource :objects do
desc "Returns an array of all objects."
get do
OBJECTS.find.to_a
end
##
# using the route_param syntax correctly returns the document
# resource path /objects/:id
##
desc "Returns an object by its id."
params do
requires :id, type: Integer
end
route_param :id do
get do
OBJECTS.find_one( "object_id" => params[:id] )
end
end
end
end
class-API2519)
#使用path参数:id返回null,为什么???
ITEMS.find_one(“item_id”=>params[:id])
结束
结束
资源:对象可以
“返回所有对象的数组。”
动手
OBJECTS.find.to_a
结束
##
#正确使用route_param语法返回文档
#资源路径/对象/:id
##
desc“按对象id返回对象。”
情妇
需要:id,类型:Integer
结束
路由参数:id do
动手
OBJECTS.find_one(“object_id”=>params[:id])
结束
结束
结束
结束
您可以使用资源
和路线
方法
参数处理有问题-params[:id]
默认为字符串。您的示例硬编码值是一个Fixnum
(整数)
查询项目列表的代码(未显示)可能正在查找整数值
您可以使用ITEMS.find_one(“item_id”=>params[:id]。to_i)
内联转换参数
但是,您可能应该使用params
description块来让Grape为您转换,因为您已经为对象转换了:
desc "Returns an item by its id."
params do
requires :id, type: Integer
end
get '/:id' do
ITEMS.find_one( "item_id" => params[:id] )
end