Rest 如何使用Swagger 2.0显示图像?

Rest 如何使用Swagger 2.0显示图像?,rest,flask,swagger,mongoengine,flask-restful,Rest,Flask,Swagger,Mongoengine,Flask Restful,我正在使用mongoengine、flask、connexion和swagger 2.0编写一个照片web应用程序来定义我的API。这个想法是有一个关于发布照片的摄影师的API和一个关于照片的其他API 我正在为PhotoAPI定义yaml文件。我们有两种方法post(上传照片)和get(使用照片的id检索照片) swagger: '2.0' info: title: Photo service API version: "0.1" paths: /photo: post:

我正在使用mongoengine、flask、connexion和swagger 2.0编写一个照片web应用程序来定义我的API。这个想法是有一个关于发布照片的摄影师的API和一个关于照片的其他API

我正在为PhotoAPI定义yaml文件。我们有两种方法post(上传照片)和get(使用照片的id检索照片)

swagger: '2.0'
info:
  title: Photo service API
  version: "0.1"

paths:
  /photo:
    post:
      tags:
        - "Photo"
      operationId: photo_service.post_photo
      summary: Add a new photo
      consumes:
         - multipart/form-data
      parameters:
        - name: photo_name
          in: formData
          description: "file to upload"
          required: true
          type: string
        - name: photo_file
          in: formData
          description: "file to upload"
          required: true
          type: file 
      responses:
        201:
          description: New photo added
          schema:
            properties:
              photo_file:
                  type: object
                  description: Information about the photo 
        409:
          description: Photo already exists

  /photo/{photo_id}:
    get:
      tags: 
        - "Specific photo"
      operationId: photo_service.get_photo
      summary: Get specific photo.
      produces:
        - image/png
      parameters:
        - $ref: '#/parameters/photo_id'
      responses:
        200:
          description: Return the requested photo.
          schema:
             type: file              
        404:
          description: Photo does not exist.
出于测试目的,Photo类非常简单:

class Photo(Document):
    photo_name = StringField(max_length=120, required=True)
    photo_file = ImageField()
我编写了以下函数,这些函数与Yaml文件的操作Id字段中调用的函数相对应:

def get_photo(photo_id):
    try:
        ph = mongo_get_photo(photo_id)
    except (Photo.DoesNotExist, InvalidId) as e:
        return 'Not Found', 404
    except pymongo.errors.ServerSelectionTimeoutError as sste:
        return 'Mongo unavailable', 503
    return ph

def post_photo(photo_name,photo_file):                                           
    try:                                                                                                                                        
        ph = mongo_add (photo_name,photo_file)                          
        return 'Created', 201, {'location': '/photo/' + str(ph.id)} 
    except pymongo.errors.ServerSelectionTimeoutError as sste:                  
        return 'Mongo unavailable', 503
因为我使用mongodb作为数据库。我正在使用包装器向我的数据库发出请求:

@robustify.retry_mongo
def mongo_add(photo_name,photo_file):
    ph = Photo(photo_name = photo_name)
    ph.photo_file.put(photo_file)
    ph.save()
    return ph

@robustify.retry_mongo
def mongo_get_photo(photo_id):
    ph = Photo.objects(id=ObjectId(photo_id)).first()
    photo = ph.photo_file.read()
    return photo
我的问题是POST方法似乎起作用了。每当我尝试发布png图片时,我都会创建一个200代码的响应。但是get方法不起作用。mongodb处理文件的方式似乎有问题。我在mongo_get_photo函数中读取图像文件的方式有问题吗?有人有线索吗

在之前将图像转换为base 64以字符串形式存储会更好吗

谢谢