我正在开发一个包含API使用grapegem 的应用程序.
这是我的Root班级:
module API
class Root < Grape::API
rescue_from :all do |e|
Rack::Response.new(
[ "Error: #{e.message}" ],
500,
{ "Content-type" => "text/error" }
).finish
end
prefix "api"
version 'v1', using: :path
format :json
error_format :json
mount ::API::ServiceRequests
end
end
Run Code Online (Sandbox Code Playgroud)
以下是我如何在路线中安装它:
mount API::Root => '/'
我收到的错误是:
routes.rb:45:in阻止':未初始化的常量API(NameError)`
文件结构相似app/api/root.rb,我在我application.rb的文件中加载了这些代码:
config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
Run Code Online (Sandbox Code Playgroud) 我正在我的Rails项目中安装Grape来构建RESTful API.
现在一些端点有需要身份验证的操作和其他不需要身份验证的端点.
例如,我有users一个看起来像这样的终点:
module Backend
module V1
class Users < Grape::API
include Backend::V1::Defaults
before { authenticate! }
resource :users do
desc "Return a user"
params do
requires :id, type: Integer, desc: 'User id'
end
get ':id' do
UsersService::Fetch.new(current_user,params).call
end
desc "Update a user"
params do
requires :id, type: Integer, desc: 'User id'
requires :display_name, type: String, desc: 'Display name'
requires :email, type: String, desc: 'Email'
end
post ':id' do
UsersService::Save.new(current_user,params).call
end
desc "Reset user password"
params do …Run Code Online (Sandbox Code Playgroud) 我正在使用rails 5和grape for api,我正在尝试为表格应用程序创建葡萄终点.
module PROJ::API::V2
class Applications < ::Grape::API
get '/' do
authorize! :read, Application
status 200
present Application.list(filter_params, current_user), with: Entities::ApplicationList, only_show: params[:only], person_base: true, current_ability: current_ability, user: current_user, nps_details: params[:nps_details]
end
end
end
Run Code Online (Sandbox Code Playgroud)
我正在获得未初始化的常量PROJ :: API :: V2 :: Applications :: Application.我尝试更改类名和文件名仍然发生相同的错误.
我试图在IntelliJ 12中启动一个GroovyFX项目.但是,我无法让IntelliJ编译并运行以下简单脚本(以最简单的方式重现问题):
@Grab(group='org.codehaus.groovyfx', module='groovyfx', version='0.3.1')
import groovyx.javafx.GroovyFX
println GroovyFX.class.name
Run Code Online (Sandbox Code Playgroud)
我使用IntelliJ对Grape's Grab的支持来添加groovyfx作为我的模块的依赖项(jar显示在"外部库"下,编辑器不会抱怨之后缺少类!)但是,当我运行脚本时,它会抛出一个错误:
Groovyc:无法解析类groovyx.javafx.GroovyFX
我能够在GroovyConsole中使用这个脚本没有太多问题,并且符合预期......
我尝试抓住另一个随机选择的依赖项(原来是一个Spring库),它直接工作:
@Grab(group='org.springframework', module='spring', version='2.5.6')
import org.springframework.jdbc.core.JdbcTemplate
println JdbcTemplate.class.name
Run Code Online (Sandbox Code Playgroud)
我看不出Spring库应该工作的原因,但不是GroovyFX库!
我甚至仔细检查了GroovyFx库是否已经实际下载了,它应该在哪里(在{user.home}/.groovy/grapes/{group}/{module}/jars /下)
是什么导致这种奇怪而极其令人沮丧的问题?
我有一个format :xmlGrape::API,对于删除请求,我想返回一个空响应。
我尝试输入的所有内容,true、false、nil,它都会尝试转换为 xml。我该怎么做呢?
谢谢
有没有一种简单的方法可以使用Grape微框架将关联的activerecord模型作为JSON返回?
get 'users' do
User.includes(:address)
end
Run Code Online (Sandbox Code Playgroud)
此代码段不起作用,User.includes(:address).to_json(include: :address)将以JSON编码两次.(to_json无论如何,我自己使用这种方法感觉不对)
如何在使用Grape gem时自定义状态代码响应?例如
post do
status = :accepted
@order = Order.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
这可以通过错误来实现!({error:'Order not found'},404)但是如何为非错误做到这一点?
有人可以解释之间的差异ActiveModel::Serializers和Grape.我应该使用其中一种还是可以/应该一起使用它们.有人还可以解释使用上述一个(或两个)与仅仅使用rails它自己构建一个的好处restful JSON API吗?
先感谢您
My Grape API接受json格式,我有接受JSON作为参数的方法:
desc 'JSON test'
params do
requires :json, type: JSON
end
post :json_test do
json = params[:json]
{result: json}
end
Run Code Online (Sandbox Code Playgroud)
当我通过邮递员发出请求时,参数是原始的application/json内容类型:
{
"json": {"test": "test"}
}
Run Code Online (Sandbox Code Playgroud)
当我发送这个时,我收到错误消息:
"json is invalid"
Run Code Online (Sandbox Code Playgroud)
但是,当我这样发送时:
{
"json": "{\"test\": \"test\"}"
}
Run Code Online (Sandbox Code Playgroud)
它显示了我正确的答案:
{
"result": {
"test": "test"
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?当我制作类型Hash第一个变体工作,但如果我想发送Array哈希/ jsons?我知道Grape不支持Array[Hash]类型.
我有一个Groovy项目(使用Eclipse),该项目使用了多个@Grab语句。这在我的开发机器上工作正常。但是,我需要将此应用程序(包括其所有依赖项)分发给没有任何互联网连接的其他计算机,即无法从这些计算机下载必要的JAR。
有没有办法以某种方式自动将依赖项包括在项目中,例如lib文件夹?这样,我可以将项目复制到另一台机器上并使用它。
ruby-grape ×10
grape-api ×4
ruby ×3
groovy ×2
json ×2
activerecord ×1
api ×1
groovyfx ×1
rack ×1