Sementara jawaban yang diterima untuk pertanyaan ini memang menjawab pertanyaan seperti yang telah dikatakan, saya merasa bahwa itu tidak menyelesaikan masalah aktual yang ada.
Untuk melengkapi dalam jawaban ini, menonaktifkan api HTML yang dapat ditelusuri dilakukan dengan menghapusnya dari kelas renderer seperti:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
Namun, masalah aktual yang disinggung pertanyaan adalah orang-orang dapat memposting ke API tanpa otentikasi. Saat menghapus formulir membuatnya kurang jelas, jawaban ini tidak melindungi titik akhir API.
Minimal, seseorang menemukan pertanyaan ini dan ingin melindungi API dari pengiriman POST yang tidak diautentikasi, atau tidak sah; mereka ingin mengubah Izin API
Berikut ini akan menetapkan semua titik akhir hanya untuk dibaca kecuali jika pengguna diautentikasi.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
Jika Anda ingin menyembunyikan API sepenuhnya kecuali jika pengguna masuk, Anda juga bisa menggunakan IsAuthenticated
.
FYI: Ini juga akan menghapus formulir dari API HTML yang dapat ditelusuri saat menanggapi izin. Ketika pengguna yang diautentikasi masuk, formulir akan tersedia lagi.
Putaran Bonus :
Hanya aktifkan API HTML yang dapat ditelusuri di dev:
DEFAULT_RENDERER_CLASSES = (
'rest_framework.renderers.JSONRenderer',
)
if DEBUG:
DEFAULT_RENDERER_CLASSES = DEFAULT_RENDERER_CLASSES + (
'rest_framework.renderers.BrowsableAPIRenderer',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'DEFAULT_RENDERER_CLASSES': DEFAULT_RENDERER_CLASSES
}