Saya memiliki titik akhir yang ditentukan di API saya yang mengambil parameter jalur.

Nilai yang valid untuk parameter itu sudah dinyatakan sebagai enum, yang telah saya definisikan sebagai komponen skema dan digunakan dalam respons.

Dua pertanyaan:

  1. Jika Anda bisa menggunakan referensi ke komponen skema itu sebagai parameter, mengapa harus menyiapkan komponen parameter khusus alih-alih menggunakan komponen skema umum yang dapat Anda gunakan kembali di mana saja?
  2. Jika Anda harus menggunakan parameter alih-alih skema generik, dapatkah Anda membuat komponen parameter yang merujuk ke komponen skema? Saya tidak dapat menemukan sintaks untuk melakukan ini yang melewati validasi.

Saya akan menempelkan definisi saya di sini tetapi saya tidak dapat menemukan opsi pemformatan apa pun yang tidak membuat kekacauan yang mengerikan.

1
Oscar 12 Mei 2021, 04:23

1 menjawab

Jawaban Terbaik

Jika Anda bisa menggunakan referensi ke komponen skema itu sebagai parameter, mengapa harus menyiapkan komponen parameter khusus alih-alih menggunakan komponen skema umum yang dapat Anda gunakan kembali di mana saja?

Definisi parameter memiliki atribut tambahan yang tidak ada dalam skema, seperti lokasi parameter dalam permintaan (in: path, in: query, dll.), metode serialisasi untuk nilai array dan objek, dan lain-lain. schema hanyalah salah satu atribut parameter, tetapi skema saja tidak memberikan informasi yang cukup untuk menggambarkan parameter secara efektif.

Jika Anda harus menggunakan parameter alih-alih skema generik, dapatkah Anda membuat komponen parameter yang merujuk ke komponen skema?

Iya. Parameter memiliki schema, dapat berupa skema sebaris atau $ref:

paths:
  /something/{role}:
    get:
      parameters:
        - $ref: '#/components/parameters/role'
...

components:
  parameters:
    role:
      in: path
      name: role
      required: true
      schema:
        $ref: '#/components/schemas/UserRole'  # <-----

  schemas:
    UserRole:
      type: string
      enum: [user, admin]
1
Helen 12 Mei 2021, 20:06