2010-08-07 138 views
1

我想知道是否有人可以確認我使用的命名約定是正確的,我剛剛開始,真的不想陷入壞習慣WCF休息方法和URI的命名約定?

這是我擁有的...(查看評論)

基本上我有一個名爲GetTasks的方法,但uri是任務 - 我認爲這是要走的路?

另外我有一個名爲的getUser方法,其中URI是(複數)用戶/ {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

有一件事我是littel困惑的是「GetUser」Uri是(複數)用戶/ {id}或應該是(單數)User/{id} – 2010-08-07 15:44:19

回答

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數據服務。雖然您定義了實體名稱,但模式通常是相同的。這種做法的好處是,你還可以定義在URL查詢您的GET,並再次將遵循以下模式:

GET  /Users?$top=10&filter=name eq 'Steve' -- return top 10 users who's name is steve 

所以我認爲你在正確的方向打算。您是否考慮過WCF數據服務?它爲您構建了這些實體操作 - 但根據您的要求,它可能不是正確的解決方案。

祝你好運。希望這可以幫助。