我正在寻找一种将图像包含到服务堆栈模型中的好策略(如果可能的话)。我已经搜索了示例或提示,但运气不佳。
就像是
class House
{
string Address;
//Image could be anything as long as it can be returned and viewed as a picture in a
browser.
Image Picture;
}
这可以作为响应的一部分返回并正确显示吗?
我正在寻找一种将图像包含到服务堆栈模型中的好策略(如果可能的话)。我已经搜索了示例或提示,但运气不佳。
就像是
class House
{
string Address;
//Image could be anything as long as it can be returned and viewed as a picture in a
browser.
Image Picture;
}
这可以作为响应的一部分返回并正确显示吗?
将二进制 blob 数据直接包含在 DTO 有效负载中很少是一个好主意。
唯一有意义的格式是使用二进制格式,如ServiceStack对ProtoBuf或Message Pack格式的支持,它们不会因编码二进制数据而受到惩罚。在这种情况下,您会将图像序列化为byte[]
DTO 上的属性。如果您尝试以文本格式执行此操作,则需要使用类似 Base64 的格式对二进制数据进行编码,从而不必要地使有效负载膨胀并增加计算开销。
推荐的方法不是直接在 DTO 中嵌入图像,而是只包含一个引用图像的 Url。ServiceStack 非常支持返回原始二进制或文本数据,您可以简单地返回任何byte[]
, Image
, Stream
, IStreamWriter
, rawstrings
等,它会按预期序列化它们。
一个很好的例子可以在新的 Image Resizer imgur.servicestack.net或RestFiles示例演示中看到。
以下是有关 wiki 上自定义 HTTP 响应的更多信息: