使用swift客户端从生成的swagger代码POST图像

And*_*iou 5 ios swagger swift

我想使用生成的swift-client发布图像.经过大量的研究,我认为指定这个的最好方法是:

/user/profilepicture:
    put:
      description: |
        upload profile picture of user
      consumes:
        - multipart/form-data
      parameters:
        - name: profilePhoto
          in: formData
          type: file
Run Code Online (Sandbox Code Playgroud)

生成的swift客户端函数签名是:

public class func usersProfilepicturePut(profilePhoto profilePhoto: NSURL? = nil, completion: ((error: ErrorType?) -> Void))
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是NSURL类型.原因是看起来很难得到NSURL一个UIImage,特别是如果照片是从相机拍摄的UIImagePickerController.

然后我再次不想将参数的类型更改为字符串,并使用base64编码,因为它会增加很多开销以将图像转换为字符串.

  • 有人可以验证我的yaml规范是否正确?(我选择文件类型,因为我可以用来上传照片的唯一其他数据类型是字符串,格式为Byte,但这会导致在字符串中转换照片的开销.
  • 如果它确实是正确的,有没有人知道是否有办法NSURL从a 获得UIImage.第二个问题存在,但是[ 获取带有Photos Framework的相机拍摄的照片的URL不会返回URL而是返回字符串标识符.类似问题的其他答案都建议保存图像,然后再次检索它只是为了得到一个NSURL看似hacky.那么我应该将生成的实现更改为接受NSData类型,还是有更好的建议?

zin*_*gle 1

看起来在撰写本文时 swagger API 正在将 NSData 编码为 Base64 到帖子中。因此,如果您不想使用 Base64 或者不想扩展/修改 swagger 生成的代码,请避免这种情况。

要发送二进制数据,您需要本地文件的 NSURL。