0

我正在挑选我的同事制作的原型。不幸的是,我完全是 C# 和 Web 服务的菜鸟。服务中的一种方法如下:

    [WebGet(UriTemplate = "GetTestData/{file}")]
    public Stream GetTestData(string file)
    {
        string fileName =
           "\\filePath" + file;
        if (File.Exists(fileName))
        {
            FileStream stream = File.OpenRead(fileName);
            if (WebOperationContext.Current != null)
            {
                WebOperationContext.Current.OutgoingResponse.ContentType = "text/.txt";
            }
            return stream;
        }
        return null;
    }

当我从我的设备输入 URL 时

http://filepath/myFile1.txt

然后我得到 myFile1.txt。她说是休息服务。有没有一种简单的方法可以向其中添加标头,以便我可以一次向设备发送所有数据?

就像在我可以要求的设备上一样

http://filePath/myFiles

并获取 myFile1-myFile5.txt?现在,粗略的实现是我必须单独询问每个文件。让服务器负责发送数据包似乎更好吗?还是这破坏了她的休息服务?谢谢!

4

1 回答 1

1

有没有一种简单的方法可以向其中添加标头,以便我可以一次向设备发送所有数据?

我不太清楚你在这里的意思,我认为更多的上下文会有所帮助。如果客户端(设备)能够接受包含多个文件的响应并且这是一个常见的用例,那么可以肯定的是,其余资源可以返回多个文件。例如,您可以实现一个额外的资源:http://filePath/myFiles像这样:

[WebGet(UriTemplate = "myFiles")]
public Stream GetAllTestData()
{
   // get all files, merge into stream and return.
}

此外,在您提供的示例中,为了更加 RESTful,Content-Type 应该是“text/plain”而不是“text/.txt”,而不是在未找到文件时返回 null 应该是带有 404 状态代码的 WebException提高。

于 2012-08-08T00:32:50.590 回答