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

时间:2016-10-04 10:10:47

标签: ios swift swagger

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

/user/profilepicture:
    put:
      description: |
        upload profile picture of user
      consumes:
        - multipart/form-data
      parameters:
        - name: profilePhoto
          in: formData
          type: file

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

public class func usersProfilepicturePut(profilePhoto profilePhoto: NSURL? = nil, completion: ((error: ErrorType?) -> Void))

我遇到的问题是NSURL类型。原因是从NSURL中获取UIImage似乎非常困难,特别是如果照片是使用UIImagePickerController从相机拍摄的。

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

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

1 个答案:

答案 0 :(得分:0)

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

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