自定义 Azure API 文件应用程序

Custom Azure API Apps for Files

我希望创建一些自定义 API 应用程序,其唯一目的是创建 a/some 逻辑应用程序。使用这些自定义 API 应用程序,我想传递文件。这些文件通常是 CSV、ZIP、Excel、TXT 和其他一些格式 - 在文件返回之前消费者不知道(即客户端不规定文件格式)。

如何以与 Swagger/Swashbuckle、Web API 和 Logic Apps 兼容的方式做这样的事情?我最终会将其绑定到 FTP 连接器、Dropbox、Onebox 或其他文件存储连接器中。

是要遵循某些东西 like this work 还是我需要采取不同的方法?例如,我是否应该简单地使用 JSON 对象并让我的二进制文件使用这样的模型进行 base64 编码?

public class BinaryFile
{
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string DeducedMimeType { get; set; }
    public int FileSize { get; set; }
    public string FileEncoding { get; set; }
    public byte[] FileBinary { get; set; }
}

(this question is cross-posted to MSDN Forums)

我采用的方法是我在 BinaryFile class 问题中提出的方法。我把它分成几个 classes。我还没有完成 - 我还有一些改进要做,但现在可以使用了。

主要 class 以及一些常用字段:

public class FileResult<T>
{
    public string Source { get; set; }
    public T File { get; set; }
    public IList<string> ErrorMessages { get; set; } = new List<string>();
    public bool IsSuccessful { get; set; } = false;
}

这是我FileResult<T>中的<T> class:

public class CsvFile
{
    public string Filename { get; set; }
    public string Contents { get; set; }
    public int Size { get; set; }
}

public class BinaryFile
{
    public string FileName { get; set; }
    public string FileExtension { get; set; }
    public string DeducedMimeType { get; set; }
    public int Size { get; set; }
    public byte[] Contents { get; set; }
}

请注意,在我的情况下,有时我会处理多个文件,而不仅仅是一个文件,因此一些看似常见的字段仍在作为 <T> 传入的类型中所以我可以有类似 FileResult<IEnumerable<CsvFile>>.

的东西

这一切都与 Swagger、Swashbuckle、Web API、Azure API 应用程序和 Azure 逻辑应用程序完美搭配。对于我将多个文件返回到我的 Azure 逻辑应用程序的情况,我使用相当隐藏的 splitsOn 功能(它也有一些设计器错误,所以要小心!)轻松迭代所有文件。效果很好。