Mor*_*eu5 3 api rest ruby-on-rails http-headers
我似乎无法在Apipie的文档中找到这一点.
我准备好了这个RESTful api,我想我会用Apipie记录它.所有精细和花花公子,以及param验证都很好,但我似乎无法让它在验证失败时抛出正确的HTTP代码作为响应.例如,我有这个POST/users方法,显然在我的数据库中创建了一个用户.很好,对吧?那么,它与422无法处理的实体,如果事情是错的回应,这很好,但随后如果说,我把它的参数没有通过apipie的验证,apipies扼流圈和抛出一个良好的老式错误,沿着线的东西
Failure/Error: post '/users.json', :user => d
Apipie::ParamInvalid:
Invalid parameter 'email' value "": Must match regular expression /[a-zA-Z0-9\-.]+\@[a-zA-Z0-9\-.]+\.[a-z]{2,}/.
# ./spec/requests/usersapi_spec.rb:66:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)
假设我对email参数进行了regexp验证.相反,我非常希望它能很好地响应(可能在json中,或者用空体),并将respose的代码设置为422.
有任何想法吗?
编辑:是的,我知道我可以禁用apipie的验证,否则就这样做......
car*_*iam 11
您可以使用rescue_from,然后使用对您有意义的错误进行响应.
class ApplicationController < ActionController::Base
# ParamError is superclass of ParamMissing, ParamInvalid
rescue_from Apipie::ParamError do |e|
render text: e.message, status: :unprocessable_entity
end
# ...
end
Run Code Online (Sandbox Code Playgroud)
ran*_*ika 10
希望你已经找到了答案 - 但是如果有人想要禁用Apipie的验证 - 这就是它.
Apipie.configure do |config|
config.validate = false
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1466 次 |
最近记录: |