C# 资源设计以获得用户';s活动

C# 资源设计以获得用户';s活动,c#,wcf,web-services,rest,C#,Wcf,Web Services,Rest,我正在使用C#和.NET 4.0框架开发一个WCF REST web服务 我不确定如何设计web服务 在我的系统上有活动和用户。用户可以做一些活动:骑自行车、踢足球、和朋友出去玩 这是userActivity类: [DataContract] public class UserActivity { [DataMember] public int userId { get; set; } [DataMember] public int activityId { g

我正在使用C#和.NET 4.0框架开发一个WCF REST web服务

我不确定如何设计web服务

在我的系统上有活动和用户。用户可以做一些活动:骑自行车、踢足球、和朋友出去玩

这是
userActivity
类:

[DataContract]
public class UserActivity
{
    [DataMember]
    public int userId { get; set; }

    [DataMember]
    public int activityId { get; set; }
}
这就是我设计web服务的方式:

这样做正确吗?我知道,我可以做任何我想做的事情,但我不确定我的web服务是否设计良好

也许,我可以通过这种方式向用户添加活动(更改POST方法):


你怎么看?

我不会在类模型中表示UserActivity,而是将一个活动列表放入User类中。 然后,您可以在URI设计中添加适当的语义:

/users
/user/{userId}
/user/{userId}/activities
/user/{userId}/activity/{activityId}

上面的URI是不言自明的,您只需输入动词。

谢谢您的回答。是否使用此URI
/user/{userId}/activity/{activityId}
向用户添加活动?是的,使用PUT动词。干杯。为什么我要用推杆?我可以使用POST吗?的确,关于REST没有标准,但普遍接受的做法是使用PUT创建资源,以防您知道ID。否则您使用POST。这取决于您对用户活动的含义。如果您认为用户的活动不是资源,因此要更新用户资源,那么您还需要考虑如果再次尝试添加相同的活动会发生什么。POST不是幂等的,而PUT是。一些参考资料:和