Преглед на файлове

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 години
committed by mergify-bot
родител
ревизия
6ca0af82b5
променени са 1 файла, в които са добавени 9 реда и са изтрити 1 реда
  1. +9
    -1
      frappe/app.py

+ 9
- 1
frappe/app.py Целия файл

@@ -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)


Зареждане…
Отказ
Запис