জ্যাঙ্গো-রেস্ট-ফ্রেমওয়ার্কের অ্যাডমিন-স্টাইলের ব্রাউজযোগ্য ইন্টারফেসটি কীভাবে অক্ষম করবেন?


150

আমি জাঙ্গো-রেস্ট-ফ্রেমওয়ার্ক ব্যবহার করছি । এটি একটি দুর্দান্ত জাজানো অ্যাডমিন স্টাইলের ব্রাউজযোগ্য স্ব-ডকুমেন্টিং এপিআই সরবরাহ করে। তবে যে কেউ এই পৃষ্ঠাগুলিতে যেতে পারেন এবং ডেটা যুক্ত করতে ইন্টারফেসটি ব্যবহার করতে পারেন (পোষ্ট) P আমি কীভাবে এটি অক্ষম করতে পারি?


হ্যাঁ, ব্যবহারকারীরা লগইন করতে এবং এপিআই ব্যবহার করতে পারেন। তবে আমি তাদের প্রশাসক-শৈলীর ব্রাউজযোগ্য পৃষ্ঠাটি দেখাতে চাই না।
iForests

উত্তর:


246

আপনাকে দেখার জন্য সমর্থিত রেন্ডারারগুলির তালিকা থেকে আপনার কেবল ব্রাউজযোগ্য এপিআই রেন্ডারার অপসারণ করতে হবে।

সাধারণত:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    )
}

প্রতি দর্শনের ভিত্তিতে:

class MyView(...):
    renderer_classes = [renderers.JSONRenderer]

পাশে :

অনেক ক্ষেত্রে আমি মনে করি এটি লজ্জাজনক যে লোকেরা যে কোনও ক্ষেত্রে ব্রাউজযোগ্য এপিআই অক্ষম করতে পছন্দ করবে, কারণ এটি এপিআইতে কাজ করা যে কোনও বিকাশকারীকে একটি বড় সহায়তা, এবং এটি তাদের অন্যরকম অনুমতি দেয় না । আমি দেখতে পাচ্ছি যে কিছু ক্ষেত্রে এটি করার ব্যবসায়ের কারণ থাকতে পারে তবে সাধারণত আমি এটিকে একটি বিশাল সম্পদ হিসাবে বিবেচনা করি। যদিও, কিছু ক্ষেত্রে এখানে বিশদ দেখানো হতে পারে (কাস্টম ক্রিয়াকলাপের নামগুলির মতো) যা একটি জন-সরকারী এপিআই প্রকাশ করতে চায় না।

আরও দেখুন নিচের উত্তর উন্নয়নে ব্রাউজযোগ্য এপিআই রেন্ডারার সীমাবদ্ধ সম্পর্কে আরো বিস্তারিত জন্য।


31
it's a big aid to any developers working on the API। তাদের কাছে কি উন্নয়ন এবং উত্পাদনের জন্য সেটিংস ফাইল থাকা উচিত নয়? বিকাশে ব্রাউজযোগ্য এপিআই সক্ষম করুন।
জ্যাকব ভ্যালেন্টা

11
@ জ্যাকবভ্যালেন্টা আমি মনে করি টম ক্রিস্টির অর্থ আপনার এপিআই ব্যবহার করে তৃতীয় পক্ষের বিকাশকারীদের ব্রাউজযোগ্য এপিআই ব্যবহার করতে সক্ষম হওয়া উচিত।
ডাস্টিন ওয়াইট

1
হ্যাঁ, @ ডাস্টিনওয়াইট অনুসারে
টম ক্রিস্টি

7
@ টমক্রিসিটি টম, আমার ক্ষেত্রে স্তরের দেখার স্তরের অনুমতিগুলি ব্যবহারকারীদের ব্যতীত ব্রাউজযোগ্য এপিআই-তে 401 এর পরে অননুমোদিত ব্যবহারকারীদের আরও কিছু দেখতে বাধা দিচ্ছে কারণ আমি অননুমোদিত পোষ্টগুলিকে নতুন ব্যবহারকারী তৈরি করার অনুমতি দিই। এর ফলে এইচটিএমএল ফর্মটি স্বয়ংক্রিয়ভাবে পূর্ণ তথ্য দিয়ে দেখানো হয় যা আমি প্রকাশ করতে চাই না। অননুমোদিত ব্যবহারকারীদের জন্য কাস্টম টেম্পলেট তৈরির সংক্ষিপ্তসারটি কী এর সহজ উপায়?
jeffjv

1
ভেবেছি আমি বহু বা বেশিরভাগ সরকারী গ্রাহককে স্পষ্টভাবে আবিষ্কারের পদ্ধতিগুলি (ব্রাউজযোগ্য আরএসটি এপিআই ইন্টারফেসের মতো) সম্পূর্ণ অক্ষম করার জন্য জিজ্ঞাসা করব। আমি বলছি না এটি বোঝা যায় বা এটি সঠিক ... এটি ঠিক is
রে পেন্ডারগ্রাফ

74

যদিও এই প্রশ্নের গৃহীত উত্তর প্রশ্নের উত্তরটি যেমনটি বলা হয়েছিল তেমন উত্তর দেয়, তবে আমি অনুভব করি যে এটি আসল সমস্যাটি হাতে এনে সমাধান করে না।

এই উত্তরের সম্পূর্ণতার জন্য, ব্র্যান্ডসযোগ্য এইচটিএমএল এপিআই নিষ্ক্রিয় করা যেমন রেন্ডারার ক্লাস থেকে সরিয়ে এটি করা হয়:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    )
}

যাইহোক, আসল ইস্যুটি যে প্রশ্নটির প্রতি ইঙ্গিত দেয় তা হ'ল লোকেরা অনুমোদন ছাড়াই এপিআইতে পোস্ট করতে সক্ষম হয়। ফর্মটি অপসারণ করার সময় এটি কম স্পষ্ট করে তোলে, এই উত্তরটি এপিআই শেষের দিকগুলি রক্ষা করে না।

সর্বনিম্ন, কেউ এই প্রশ্নটি আবিষ্কার করে এবং এআইপিটিকে অননুমোদিত, বা অননুমোদিত পোষ্ট জমা দেওয়ার হাত থেকে রক্ষা করতে চাইছেন; এপিআই অনুমতিগুলি পরিবর্তন করতে খুঁজছেন

নিম্নলিখিতটি কেবলমাত্র ব্যবহারকারীকে প্রমাণীকরণ না করা হলে পঠনের জন্য সমস্ত শেষ পয়েন্ট সেট করবে।

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticatedOrReadOnly',
    )
}

ব্যবহারকারী লগ ইন না করা আপনি যদি API টি সম্পূর্ণরূপে আড়াল করতে চান তবে আপনি এটি ব্যবহার করতেও পারেন IsAuthenticated

এফওয়াইআই: অনুমতিগুলির প্রতিক্রিয়া হিসাবে এটি ফর্মটি HTML ব্রাউজযোগ্য API থেকে সরিয়ে ফেলবে। যখন কোনও প্রমাণীকৃত ব্যবহারকারী লগ ইন করে, ফর্মটি আবার উপলব্ধ হবে।

বোনাস রাউন্ড :

কেবলমাত্র ডিভাইসে ব্রাউজযোগ্য এইচটিএমএল 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
}

7
এটি গৃহীত, সর্বাধিক-উত্সাহিত উত্তরের চেয়ে প্রশ্নের সরাসরি উত্তর দেয়।
কচ্ছপগুলি

: আপনি স্থানীয় ও উৎপাদনের জন্য পৃথক কনফিগ ফাইল না করেন, তাহলে আপনি শুধুমাত্র এই আপনার local.py সেটিংস ফাইল রাখা যাবে (শুধু একটি tuple থেকে একটি তালিকায় উপরে পরিবর্তন করতে ভুলবেন না)REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
getup8

2
import rest_framework

For Production Only
 REST_FRAMEWORK = {
     'DEFAULT_RENDERER_CLASSES': (
         'rest_framework.renderers.JSONRenderer',
     )
 }

কেবল এটি আপনার সেটিংসে যুক্ত করুন pyপি ব্রাউজযোগ্য এপিআই অক্ষম করা উচিত!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.