Django-rest-framework を使用しています。素晴らしいDjango adminスタイルの閲覧可能な自己文書化API。
この質問に対する受け入れられた答えは、言葉どおりに質問に答えますが、実際の問題を解決するものではないと感じています。
この答えを完全にするために、参照可能なHTML APIを無効にするには、次のようにレンダラークラスから削除します。
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
ただし、質問が暗示している実際の問題は、認証なしでAPIに投稿できることです。フォームを削除するとわかりにくくなりますが、この回答はAPIエンドポイントを保護しません。
少なくとも、誰かがこの質問を見つけて、認証されていない、または不正なAPIを保護しようとしていますPOST提出; API Permissions
以下は、ユーザーが認証されない限り、すべてのエンドポイントを読み取り専用に設定します。
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
ユーザーがログインしていない限り、APIを完全に非表示にする場合は、IsAuthenticated
も使用できます。
参考までに、これは権限に応答するときにHTML参照可能APIからフォームを削除します。認証されたユーザーがログインすると、フォームが再び使用可能になります。
ボーナスラウンド:
Devで参照可能なHTML APIのみを有効にします。
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
}
import rest_framework
For Production Only
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
これをSettings.pyに追加するだけで、Browsable APIが無効になります!
設定の'rest_framework.renderers.BrowsableAPIRenderer',
から'DEFAULT_RENDERER_CLASSES'
を削除します