我想知道是否有人可以确认我使用的命名约定是正确的,我刚开始并且真的不想养成坏习惯
这是我的......(见评论)
基本上我有一个名为GetTasks的方法,但是uri是任务 - 我认为这是要走的路?
我还有一个名为GetUser的方法,其中Uri是(复数)Users / {id}
在我继续之前的任何确认都会很棒..谢谢..
这是我目前的方法..
[WebGet(UriTemplate = "Tasks")]
public List<SampleItem> GetTasks() //RETURNS a COLLECTION
{
// TODO: Replace the current implementation to return a collection of SampleItem instances
return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
}
[WebGet(UriTemplate = "Users/{id}")]
public SampleItem GetUser(string id) // RETURNS A USER
{
// TODO: Return the instance of SampleItem with the given id
//throw new NotImplementedException();
return new SampleItem() {Id = 1, StringValue = "Hello"};
}
[WebInvoke(UriTemplate = "Users/{id}", Method = "PUT")]
public SampleItem UpdateUser(string id, SampleItem instance) // UPDATES A USER
{
// TODO: Update the given instance of SampleItem in the collection
throw new NotImplementedException();
}
[WebInvoke(UriTemplate = "Users/{id}", Method = "DELETE")]
public void DeleteUser(string id) // DELETES A USER
{
// TODO: Remove the instance of SampleItem with the given id from the collection
throw new NotImplementedException();
}
答案 0 :(得分:1)
嗯,有时模仿是最好的奉承形式。如果您查看StackOverflow,他们会使用users/{userid}/...
作为其URI约定。通常,对实体使用复数,然后让下一个段(如果存在)描述该操作似乎是相当标准的。这通常是我定义RESTful服务的方向:
GET /Users -- return all users
GET /Users/{id} -- return a single user
POST /Users -- insert a user
PUT /Users/{id} -- update a user
DELETE /Users/{id} -- delete a user
这也很适合WCF数据服务。虽然您定义了实体名称,但模式通常是相同的。不错的是,您还可以在GET的URL上定义查询,并再次遵循该模式:
GET /Users?$top=10&filter=name eq 'Steve' -- return top 10 users who's name is steve
所以我认为你正朝着正确的方向前进。您是否考虑过WCF数据服务?它为您构建这些实体操作 - 但根据您的要求,它可能不是正确的解决方案。
祝你好运。希望这会有所帮助。