Sfoglia il codice sorgente

fix: Respond to /api requests as JSON by default

If header 'Accept: application/json' isn't set, the failure
responses to /api endpoints is HTML. Success responses are of type JSON.

(cherry picked from commit fcf63622bc)
version-14
Gavin D'souza 4 anni fa
committed by mergify-bot
parent
commit
6ca0af82b5
1 ha cambiato i file con 9 aggiunte e 1 eliminazioni
  1. +9
    -1
      frappe/app.py

+ 9
- 1
frappe/app.py Vedi File

@@ -201,12 +201,20 @@ def handle_exception(e):
response = None
http_status_code = getattr(e, "http_status_code", 500)
return_as_message = False
accept_header = frappe.get_request_header("Accept") or ""
respond_as_json = (
frappe.get_request_header('Accept')
and (frappe.local.is_ajax or 'application/json' in accept_header)
or (
frappe.local.request.path.startswith("/api/") and not accept_header.startswith("text")
)
)

if frappe.conf.get('developer_mode'):
# don't fail silently
print(frappe.get_traceback())

if frappe.get_request_header('Accept') and (frappe.local.is_ajax or 'application/json' in frappe.get_request_header('Accept')):
if respond_as_json:
# handle ajax responses first
# if the request is ajax, send back the trace or error message
response = frappe.utils.response.report_error(http_status_code)


Caricamento…
Annulla
Salva