Rails5.2 Grape으로 API 제작, Swagger에서 속편 확인
10638 단어 Rails
필기 리필. API 콘셉트 조금만 더 해볼게요.
저번
JSON 편지에 이런 걸 붙여봤어요.result: true,
message: "取得しました",
config/initializers/locale.rbRails.application.config.i18n.default_locale = :ja
config/locales/api.ymlja:
api:
success_message:
get: 取得しました
create: 作成しました
update: 更新しました
delete: 削除しました
app/views/api/v1/task_displays/index.jbuilderjson.result true
json.message I18n.t('api.success_message.get')
json.tasks @tasks do |task|
json.(task, :id, :name, :description)
end
오류 대응
result: true,
message: "取得しました",
Rails.application.config.i18n.default_locale = :ja
ja:
api:
success_message:
get: 取得しました
create: 作成しました
update: 更新しました
delete: 削除しました
json.result true
json.message I18n.t('api.success_message.get')
json.tasks @tasks do |task|
json.(task, :id, :name, :description)
end
module Versions
module V1
class API < Grape::API
version 'v1', using: :path
format :json
formatter :json, Grape::Formatter::Jbuilder
prefix :api
# エラー対応
rescue_from :all, backtrace: true
error_formatter :json, ::MediaSite::ErrorFormatter
include ::Versions::V1::TaskDisplays
# :nocov:
if Rails.env.development? || Rails.env.staging?
add_swagger_documentation add_version: true
end
# :nocov:
end
end
end
module MediaSite
module ErrorFormatter
# error!メソッド実行時にJSONを出力する
# 5つのパラメーターが渡されるのでそれを元にエラー出力
# @param [Object] message メッセージまたはメッセージ+エラーコードのHash
# @param [Array] _backtrace backtrace
# @param [Hash] _options options
# @params [Symbol] _env env
# @params [不明] _other
# @return [String] JSON文字列
def self.call(message, _backtrace, _options, _env)
if message.is_a?(Hash)
{ result: false }.merge(message).to_json
else
{ result: false, message: message }.to_json
end
end
end
end
매개변수 추가
module Versions
module V1
module TaskDisplays
extend ActiveSupport::Concern
included do
namespace :tasks do
namespace :displays do
desc 'タスク一覧を取得する'
get '', jbuilder: 'v1/task_displays/index' do
@tasks = Task.all
end
desc "個別タスクの取得"
params do
requires :id, type: Integer
end
# http://localhost:3000/api/1/task_displays/{:id}
get ':id', jbuilder: 'v1/task_displays/detail' do
@task = Task.find(params[:id])
end
end
end
end
end
end
end
app/views/api/v1/task_displays/detail.jbuilderjson.result true
json.message I18n.t('api.success_message.get')
json.task do
json.(@task, :id, :name, :description)
end
http://localhost:3000/api/v1/tasks/displays/1
작업이 없는 id를 지정할 때
"result:false"가 되고 메시지에 오류 메시지 입력
Reference
이 문제에 관하여(Rails5.2 Grape으로 API 제작, Swagger에서 속편 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katafuchix/items/705d628e09cf877e61de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)