2017-08-04 13 views
1

目前我昂首阔步输出看起来像这样的如何在aspnet core mvc中使用swagger为表单体提供多种数据类型?

 { 
     "name": "body", 
     "in": "body", 
     "description": "", 
     "required": true, 
     "type": "file" 
     } 

和我读了type属性可以是类型

 { 
     "name": "body", 
     "in": "body", 
     "description": "", 
     "required": true, 
     "type": [null,"file"] 
     } 

一个阵列的文档,但我发现没有办法的身体参数告诉aspnet核心mvc或swaggerGen输出两种类型?这可能吗。

我想swaggerUI包括选择一个文件或发布一些json数据的选项。这可以做到吗?

enter image description here

回答

0

和我读该类型属性可以是类型

"type": [null,"file"] 

一个阵列这不是在所述OpenAPI /扬鞭有效的文档。 type必须是单一类型,并且不存在null类型。

我想swaggerUI包括选择文件或发布一些json数据的选项。

在OpenAPI/Swagger 2.0中,这是不可能的 - 操作可以发布文件或JSON,但不能同时发布。您需要两个操作 - 一个接受JSON,另一个接受文件。


你想将使用的OpenAPI 3.0是可能的。但是,我不知道ASP.NET Core MVC是否支持OpenAPI 3.0;工具采用新版本的OpenAPI可能需要一些时间。

你的API规范(在YAML)是这样的:

paths: 
    /something: 
    post: 
     requestBody: 
     description: Either a file or JSON object 
     required: true 
     content: 

      application/json: 
      schema: 
       type: object: 
       properties: 
       ... 

      # Post a file via a multipart request 
      multipart/form-data: 
      schema: 
       type: object 
       properties: 
       file: # <-- here "file" is a form field name 
        type: string 
        format: binary 
       required: 
       - file 

      # or maybe... 
      # Post a file directly 
      application/octet-stream: 
      schema: 
       type: string 
       format: binary 

     responses: 
     ... 
+0

感谢详细的解答。我自己分叉和操纵swagger工具,所以没有任何问题使它产生v3的东西。 –

+0

说,你见过任何v3的UI生成器? –

+1

如果你的意思UI渲染 - 扬鞭UI 3.1.0加入OAS 3渲染,但没有“尝试一下”,但(你可以追踪[#3338](https://github.com/swagger-api/swagger-ui/问题/ 3338)更新)。 – Helen

相关问题