Как мне указать конкретные параметры в ответе Swagger, а не использовать `allOf`? - PullRequest
0 голосов
/ 06 ноября 2019

Я определил некоторые параметры, используя аннотации в моей модели (PHP) и используя darkaonline/l5-swagger для компиляции лота в JSON. Аннотации выглядят так:

/** 
* @OA\Schema(schema="UserModel", required={""})
*/
class User extends Authenticatable
{

/**
 * @OA\Property(
 *   property="id",
 *   type="integer",
 *   format="int64",
 *   description="The unique identifier of a user"
 * )
 */

/**
 * @OA\Property(
 *   property="email",
 *   type="string",
 *   example="john@example.com",
 *   description="The email address of a user"
 * )
 */

/**
 * @OA\Property(
 *   property="password",
 *   type="string",
 *   description="The password of a user"
 * )
 */

/**
 * @OA\Schema(
 *   schema="CreateUser",
 *   type="object",
 *   allOf={
 *     @OA\Schema(ref="#/components/schemas/UserModel"),
 *   }
 * )
 */

В схеме, которую я определил для полезной нагрузки, у меня есть allOf, которая будет включать все свойства. Это работает, когда идет загрузка документа, но я, очевидно, не хочу, чтобы там были такие свойства, как id. Я предполагаю, что есть альтернатива allOf, которая позволит мне определить, какие свойства мне нужны, но я не могу найти их.

Кто-нибудь знает, что это может быть?

1 Ответ

1 голос
/ 06 ноября 2019

В openapi нет альтернативы allOf, которая позволила бы вам выбирать, какие свойства из другого объекта вы хотите использовать. Если вам действительно нужна эта функциональность, вы можете определить различные объекты, содержащие каждое поле отдельно, а затем повторно использовать те, которые вам действительно нужны. Примерно так:

UserIdModel:
  properties:
    id: 
      type: integer
      ...
UserEmailModel:
  properties:
    email:
      type: string
      ...
UserPasswordModel:
  properties:
    password:
      type: string
      ...
CreateUser:
  allOf:
    - $ref: '#/components/schemas/UserEmailModel'
    - $ref: '#/components/schemas/UserPasswordModel'

...