2014-01-29 48 views
8

我正在擴展一個web服務的ApiController如何發送一個GUID到一個web api web服務

該服務將GUID作爲其唯一參數。這是我輸入的網址

/api/texts/2ADEA345-7F7A-4313-87AE-F05E8B2DE678 

但是,Guid永遠不會達到Get方法。

如果我將它設置爲對象

public Object Get(Object userId) 

的方法火災,但用戶ID爲空。

如果我將其設置爲全局唯一標識符

public Object Get(Guid? userId) 

我得到的錯誤

沒有行動上的控制器「文本」與請求匹配的發現。

有沒有人有樣品可以幫助我?

+0

你試過一個字符串作爲參數嗎? – Fals

回答

21

我假設你正在使用中的模式是默認路由:

api/{controller}/{id} 

因此,嘗試據此命名您的參數:

public TextsController: ApiController 
{ 
    public HttpResponseMessage Get(Guid? id) 
    { 
     ... 
    } 
} 

現在/api/texts/2ADEA345-7F7A-4313-87AE-F05E8B2DE678 URL應該打Get行動TextsController並填充id參數。

+0

感謝@ darin-dimitrov提供了很好的答案。但是我有一個問題,爲RESTful服務傳遞GUID是否正確?我打算在我的GET服務中使用GUID。但它有32個字符長度,除此之外,它是否違反任何語義含義或任何設計模式? – Pandiarajan

+1

我不這麼認爲,你可以舒服地使用@Pandiarajan。其實,使用GUID或整數ID取決於檢索你是什麼。我的意思是根據重要性較低的數據。 –

+0

@AbdurrahmanI。該Guid表示通信的相關ID。由WebApi的消費者生成,以確保冪等性。 – Pandiarajan