Forráskód Böngészése

Make all API errors similarly structured

Andrew Swistak 6 éve
szülő
commit
233d009bde

+ 7 - 3
app/controllers/api/application_controller.rb

@@ -8,8 +8,8 @@ class API::ApplicationController < ActionController::API
   rescue_from StandardError, with: :handle_unhandled_api_error
 
   def not_found
-    @error = APIError::BaseError.new('The requested resource was not found')
-    render partial: 'error', status: :not_found
+    error = APIError::BaseError.new('The requested resource was not found')
+    render_error(error, :not_found)
   end
 
   private
@@ -18,7 +18,11 @@ class API::ApplicationController < ActionController::API
       Rails.logger.error("Unhandled API Error: #{err}\n#{err.backtrace.join("\n")}")
 
       error = APIError::BaseError.new('An unhandled exception occurred.', internal_error: err)
-      render json: {message: error.message, type: error.type}, status: :internal_server_error
+      render_error(error)
+    end
+
+    def render_error(error, status = :internal_server_error)
+      render json: {errors: [{message: error.message, type: error.type}]}, status: status
     end
 
     def set_default_response_format

+ 1 - 1
app/controllers/api/graphql_controller.rb

@@ -41,6 +41,6 @@ class API::GraphqlController < API::ApplicationController
       logger.error err.message
       logger.error err.backtrace.join("\n")
 
-      render json: {error: {message: err.message, backtrace: err.backtrace}, data: {}}, status: :internal_server_error
+      render json: {errors: [{message: err.message, backtrace: err.backtrace}], data: {}}, status: :internal_server_error
     end
 end