diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm index d503052..a20e761 100644 --- a/guix-data-service/web/controller.scm +++ b/guix-data-service/web/controller.scm @@ -718,11 +718,20 @@ startup-controller-thunk) #:on-error 'backtrace #:post-error (lambda args - (render-html #:sxml (error-page - (if (%show-error-details) - args - #f)) - #:code 500)))) + (case (most-appropriate-mime-type + '(application/json text/html) + mime-types) + ((application/json) + (render-json `((error . ,(if (%show-error-details) + (simple-format #f "~A" args) + #f))) + #:code 500)) + (else + (render-html #:sxml (error-page + (if (%show-error-details) + args + #f)) + #:code 500)))))) (define* (base-controller request method-and-path-components startup-completed?)