সোয়াগার / ওপেনএপিআই - পুনরায় ব্যবহারযোগ্য সংজ্ঞায়িত প্যারামিটারটি পাস করতে $ রেফ ব্যবহার করুন


84

ধরা যাক আমি একটি প্যারামিটার পেয়েছি limit। এটি পুরো জায়গা জুড়ে ব্যবহৃত হয় এবং আমার যদি আপডেট করার প্রয়োজন হয় তবে এটি সর্বত্র বদলাতে পারা ব্যথা:

parameters:
    - name: limit
      in: query
      description: Limits the number of returned results
      required: false
      type: number
      format: int32

আমি অন্য কোথাও এটি সংজ্ঞায়িত করতে এবং এটি পুনরায় ব্যবহারযোগ্য করে তুলতে $ রেফ ব্যবহার করতে পারি? আমি এই টিকিটটি পেরিয়ে এসেছি যা প্রস্তাব দেয় যে কেউ বৈশিষ্ট্য পরিবর্তন বা উন্নত করতে চায়, তবে আমি বলতে পারি না যে এটি ইতিমধ্যে আজ উপস্থিত আছে কি নেই?

উত্তর:


134

এই বৈশিষ্ট্যটি ইতিমধ্যে সোয়াগার ২.০ এ বিদ্যমান। লিঙ্কযুক্ত টিকিট এর নির্দিষ্ট কিছু মেকানিক সম্পর্কিত কথা বলে যা এই বৈশিষ্ট্যের কার্যকারিতা প্রভাবিত করে না।

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

আপনি এর জন্য এখানে উদাহরণ খুঁজে পেতে পারেন - https://github.com/swagger-api/swagger-spec/blob/master/fixtures/v2.0/json/resources/reusableParaimar.json - এমনকি একটি সীমা পরামিতি সহ।

আপনার ক্ষেত্রে, আপনি এটি করতে চাই:

# define a path with parameter reference
/path:
   get:
      parameters:
         - $ref: "#/parameters/limitParam"
         - $ref: "#/parameters/offsetParam"

# define reusable parameters:
parameters:
   limitParam:
      name: limit
      in: query
      description: Limits the number of returned results
      required: false
      type: integer
      format: int32
   offsetParam:
      name: offset
      in: query
      description: Offset from which start returned results
      required: false
      type: integer
      format: int32

আপনি কি পথের পরামিতিগুলি দিয়ে এটি করতে পারেন? বা শুধুমাত্র কোয়েরি পরামিতি?
ব্র্যান্ডস্ক্রিপ্ট

যে কোনও পরামিতি প্রকার, যেখানেই প্যারামিটার ব্যবহার করা হয় (পথের স্তরে বা অপারেশন নিজেই)। শীর্ষ-স্তরের প্যারামিটার সংজ্ঞাটি একই পরামিতি অবজেক্টটিকে অপারেশনের জন্য স্পষ্টভাবে সংজ্ঞায়িত হিসাবে ব্যবহার করে।
রন

6
প্যারামিটারটি বাড়ানো কি সম্ভব? উদাহরণস্বরূপ, একই পরামিতি সংজ্ঞাটি in: pathএক ক্ষেত্রে এবং in: queryঅন্য ক্ষেত্রে হতে পারে । এছাড়াও এক ক্ষেত্রে alচ্ছিক এবং অন্য ক্ষেত্রে প্রয়োজন হতে পারে।

8
আপনাকে এর জন্য দুটি পৃথক সংজ্ঞা তৈরি করতে হবে।
রন

4
সম্পূর্ণ অনুরোধ যুক্তি পুনরায় ব্যবহারযোগ্য করা সম্ভব? যেমন: প্যারামিটার: $ রেফ: "# / পরামিতি /
অনুরোধপ্যারামস

31

সম্পূর্ণতার জন্য, এখানে ওপেনপিআই-এর মতো দেখতে কেমন হবে (ওরফে সোয়াগার ভি 3):

openapi: "3.0.0"
servers:
    - url: /v1
      description: local server

paths:
   /path:
      get:
         parameters:
            - $ref: "#/components/parameters/limitParam"

components:
   parameters:
      limitParam:
         name: limit
         in: query
         description: Limits the number of returned results
         required: false
         schema:
            type: integer
            minimum: 10
            default: 10
            multipleOf: 10 # matches 10, 20, ...
            format: int32
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.