我的服务有POST方法上传图片文件。我正在使用multipart / form-data请求并访问Service类的Request.Files文件,因为它在文档中是推荐的。
public class ImageManagement: Service
{
public void Post(DetectionImageRequest imageRequest)
{
if (this.Request.Files.Length == 0)
throw HttpError.NotFound("File parameter is missing");
// ...
}
}
我的问题是,如果Http请求中缺少文件,似乎ServiceStack在我的ImageManagement类中与Post方法匹配没有任何问题。如果我的Http请求的DetectionImageRequest部分丢失,ServiceStack肯定会报告错误。
此外,作为http请求的参数的文件在元数据页面中不可见,因此其他用户不知道该文件需要上传。如果上传了文件,我在Post方法中添加了检查,如果不是,则抛出异常,但如果文档甚至没有提及文件作为要求,那么看起来有点愚蠢抛出异常。
有没有办法让文件成为必需参数?此外,是否可以将文件记录为元数据页面中的参数,以便用户知道它存在?
答案 0 :(得分:1)
HTTP上传的文件不是DTO服务合同的一部分,它们是通过multipart/form-data
Content-Type上传的,因此没有可以注释的属性使其成为必填字段。
您可以使用[Api]
或[Description]
属性中的说明字段来使用文字说明来告知API使用者服务接受文件。我还建议对接受文件的服务使用命名约定,例如:让它们以Upload*
前缀开头。