Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过Swagger定义我的API;这个设计不好吗?_Api_Rest_Swagger - Fatal编程技术网

无法通过Swagger定义我的API;这个设计不好吗?

无法通过Swagger定义我的API;这个设计不好吗?,api,rest,swagger,Api,Rest,Swagger,我们的一个API接受来自用户的证书。在当前设计中,用户将原始证书数据转储到有效负载中,并使用设置为application/x-pkcs12的内容类型发出POST请求。 因此,本质上,我们的API接受请求主体中文件的原始字节 如果我试图通过Swagger定义这个API,那么我就不能这样做。因为,如果我错了,请纠正我,此操作的参数必须是“in”body,并且此参数的“type”必须是file。 Swagger要求所有主体参数都必须具有Schema对象,并且file类型的所有参数都应将“in”值设置为

我们的一个API接受来自用户的证书。在当前设计中,用户将原始证书数据转储到有效负载中,并使用设置为application/x-pkcs12的内容类型发出POST请求。 因此,本质上,我们的API接受请求主体中文件的原始字节

如果我试图通过Swagger定义这个API,那么我就不能这样做。因为,如果我错了,请纠正我,此操作的参数必须是“in”body,并且此参数的“type”必须是file。 Swagger要求所有主体参数都必须具有Schema对象,并且file类型的所有参数都应将“in”值设置为formData。这两项要求都与我们的情况相矛盾

所以我的问题是,这是招摇过市的局限性吗?或者这只是糟糕的API设计,我们是否应该以其他方式构建/设计我们的API

我对API的世界相当陌生,所以我不确定这是哪种情况


提前谢谢。

我相信这还是可以做到的。正文参数架构的类型应为[]字节。调用API时,参数值应为文件内容的base-64编码字符串。这类似于在请求正文中发送二进制.jpg文件的内容。

Swagger 2.0允许文件类型的参数。这似乎适合您的用例

parameters:
- name: cert
  in: formData
  description: The certificate
  required: true
  type: file

OpenAPI 3.0支持您的场景。以前的版本OpenAPI/Swagger 2.0只允许使用多部分/表单数据请求上传文件,但3.0也支持上传原始文件

路径: /证书: 职位: 请求主体: 必填项:true 内容: 应用程序/x-pkcs12: 模式: 类型:字符串 格式:二进制 响应: ... 更多信息: