2017-06-01 61 views
0

我正在处理的swagger 2.0文件中,我想指定从我的响应中的错误代码只能是USERNAME_VALIDATION_FAILED或EMAIL_VALIDATION_FAILED。这是由于swaggerfile的swagger-ui视图,其中每个响应错误都可能具有错误代码枚举中定义的20个错误代码。 如何限制特定响应的可能错误代码?响应的极限错误代码

在我swaggerfile有请求

/register: 
post: 
    ... 
    parameters: 
     ... 
    responses: 
    ... 
    400: 
     description: Username or email validation failed, possible values for code are USERNAME_VALIDATION_FAILED, EMAIL_VALIDATION_FAILED 
     schema: 
     $ref: '#/definitions/Error' 

和我的错误看起来像

Error: 
type: object 
properties: 
    code: 
    type: string 
    enum: 
     - USERNAME_VALIDATION_FAILED 
     - EMAIL_VALIDATION_FAILED 
     - USERNAME_EXISTS 
     - ... 

我建议像

schema: 
    $ref: '#/definitions/Error.code.of(USERNAME_VALIDATION_FAILED, EMAIL_VALIDATION_FAILED)' 

回答

1

不能覆盖的enum一个属性,所以你需要一个单独的模型:

RegistrationError: 
    type: object 
    properties: 
    code: 
     type: string 
     enum: 
     - USERNAME_VALIDATION_FAILED 
     - EMAIL_VALIDATION_FAILED 

Error: 
    type: object 
    properties: 
    code: 
     type: string 
     enum: 
     - USERNAME_VALIDATION_FAILED 
     - EMAIL_VALIDATION_FAILED 
     - USERNAME_EXISTS 
     - ... 

如果误差模型具有共同的属性,你可以从一个基础模型“继承”他们减少重复代码:

BaseError: 
    type: object 
    properties: 
    message: 
     type: string 

RegistrationError: 
    allOf: 
    - $ref: "#/definitions/BaseError" 
    - type: object 
     properties: 
     code: 
      type: string 
      enum: 
      - USERNAME_VALIDATION_FAILED 
      - EMAIL_VALIDATION_FAILED 

Error: 
    allOf: 
    - $ref: "#/definitions/BaseError" 
    - type: object 
     properties: 
     code: 
      type: string 
      enum: 
      - USERNAME_VALIDATION_FAILED 
      - EMAIL_VALIDATION_FAILED 
      - USERNAME_EXISTS 
      - ... 
+0

感谢,这正是我开始觉得我自己。它完美地解决了我的问题。 – sch0rschi

相关问题