@permission_classes((AllowAny, ))
class Viewset(viewsets.ViewSet):
renderer_classes = (JSONRenderer, )
def list(self, request, *args, **kwargs):
return Response()
Badan respons json yang valid seperti null
atau {}
Tidak ada set header Content-Type
dan respons kosong dikembalikan - terutama menyakitkan saat membuat permintaan dengan ajax()
jquery. Itu melempar parseerror dan menolak janji pada respons sukses dengan tubuh kosong. Lihat di sini https://stackoverflow.com/a/6186905
PR di sini: https://github.com/encode/Django-rest-framework/pull/6027
Hanya klarifikasi singkat.. Saya mungkin tidak membuat ulang pengaturan persis Anda, tetapi pengujian manual cepat menunjukkan bahwa Content-Type
header diatur dengan benar ke application/json
.
Mengenai respons kosong, saya cenderung setuju dengan @kltdwrds. Saya tidak tahu apakah spec memungkinkan tubuh kosong, bagaimanapun, baik JavaScript untuk JSON.parse
dan Python json.loads
gagal untuk memecahkan kode string kosong.
Artinya, data=None
harus dikodekan sebagai null
.
Setelah dipikir-pikir, perilaku saat ini masuk akal. Meskipun JSON.parse
dan json.loads
gagal, klien bertanggung jawab untuk memeriksa tipe konten sebelum menguraikan. Jika ada, ini adalah bug di jQuery.
hmm saya pakai
from rest_framework import viewsets
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
Tidak yakin di mana tajuk Content-Type
disetel, tetapi saya baru saja mengonfirmasi bahwa itu hilang dari tanggapan menggunakan contoh di atas.
Sepertinya header Content-Type
dihapus pada respons perender kosong (baris 80)
https://github.com/encode/Django-rest-framework/blob/master/rest_framework/response.py#L72
Perilaku kita saat ini untuk return Response()
disengaja. Meskipun mengembalikan null
juga akan valid, biasanya kita memerlukan cara untuk mengembalikan respons kosong tanpa tipe konten. Saya mungkin lebih suka kita membiarkan hal-hal apa adanya untuk saat ini.
Komentar yang paling membantu
Sepertinya header
Content-Type
dihapus pada respons perender kosong (baris 80)https://github.com/encode/Django-rest-framework/blob/master/rest_framework/response.py#L72