feat(oas3): Show file upload for schema binary format (#7325)

* fix(ux): display actual content type instead of hard-coded application/octet-stream

* feat(ux): show file upload when schema has "format: binary", fixes #5636

* feat(ux): show file upload when schema has "format: base64"

According to
https://github.com/swagger-api/swagger-ui/pull/7325#issuecomment-861684260
the uploaded file should be converted to base64 automatically.

* feat(ux): add cypress tests for displaying an upload button
This commit is contained in:
Andreas Grub
2021-06-23 00:33:57 +02:00
committed by GitHub
parent 1032d927a5
commit 13c110a6fe
3 changed files with 225 additions and 2 deletions

View File

@@ -0,0 +1,105 @@
openapi: 3.0.0
info:
title: "Request body file upload"
description: |-
This document has examples for examining the `schema` or content type for request bodies requiring a file upload
* `application/octect-stream` content type (no matter what schema format)
* `audio/*` content type (no matter what schema format)
* `image/*` content type (no matter what schema format)
* `video/*` content type (no matter what schema format)
* schema format is `base64` (no matter what content type)
* schema format is `binary` (no matter what content type)
version: "1.0.0"
paths:
/upload-application-octet-stream:
post:
operationId: uploadApplicationOctetStream
requestBody:
content:
application/octet-stream:
schema:
type: string
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
/upload-image-png:
post:
operationId: uploadImagePng
requestBody:
content:
image/png:
schema:
type: string
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
/upload-audio-wav:
post:
operationId: uploadAudioWav
requestBody:
content:
audio/wav:
schema:
type: string
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
/upload-video-mpeg:
post:
operationId: uploadVideoMpeg
requestBody:
content:
video/mpeg:
schema:
type: string
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
/upload-schema-format-binary:
post:
operationId: uploadSchemaFormatBinary
requestBody:
content:
application/x-custom:
schema:
type: string
format: binary
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string
/upload-schema-format-base64:
post:
operationId: uploadSchemaFormatBase64
requestBody:
content:
application/x-custom:
schema:
type: string
format: base64
responses:
'200':
description: successful operation
content:
text/plain:
schema:
type: string