与标签关联的WCF / REST返回组,修复数据交换&数据成员

时间:2012-04-06 15:06:53

标签: c# wcf web-services rest

所以我坚持下面每个部分的一些内容,对于你们大多数人来说,它们对于堆栈来说是非常微不足道的,所以只是想知道我是否可以在下面的代码段中找到我遇到的三个问题的帮助:< / p>

我的运营合同如下:

    [OperationContract]
    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "")]
    List<Tag> GetTagCollection();
    #endregion 

我的datacontracts看起来像这样:

[DataContract(Name="Student")]
public class Student
{
    [DataMember(Name = "StudentID")]
    public string StudentID { get; set; }
    [DataMember(Name = "FirstName")]
    public string FirstName { get; set; }
    [DataMember(Name = "LastName")]
    public string LastName { get; set; }
}

我的服务工作如下:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class RawDataService : IReceiveData
{

    public List<Group> GetGroupsCollection(string TagName)
    {
        List<Group> groups = (from g in _program.Groups // _program does not exist notsure what goes here
                              where
                                  (from t in g.Tags where t.Name == TagName select t).Count() > 0
                              select g).ToList();
        return groups;
    }

1 个答案:

答案 0 :(得分:1)

1.由于GetGroupsCollection需要TagName参数,您需要将其包含在您的uri模板中:

/whatever/{TagName}

以便在WCF REST调用时将其传递给方法。 Uri Template (msdn)

2.您的合同看起来没问题,但是当名称与类/成员名称相同时,您不需要名称。 .Net会为你解决这个问题。但它没有伤害......

3.您的服务必须从某个地方提取数据,对吧?现在,您可以简单地新建一组用于测试并返回的组。数据库连接,ORM等可能超出了本问题的范围。

这应该足以产生:

var tempGroups = new[]{
    new Group { 
        Name = "Hello", 
        Tags = new[] { 
            new Tag { Name = "Tag1"}, 
            new Tag { Name =  "Tag2"}
        }
    },
   new Group { 
        Name = "World", 
        Tags = new[] { 
            new Tag { Name = "Tag1"}, 
            new Tag { Name = "Tag2"}
            new Tag { Name = "Tag3"}
        }
    }
};

只需将_program.Groups替换为tempGroups