我有一個實體的ServiceStack路由與ravendb IDS
public string ID {get;set;}
activities/1
的ID(它來自RavenDB)。
我註冊了以下路線在我ServiceStack APPHOST
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
我使用主幹應用POST和PUT到我的REST服務。
出的即裝即用,會發生什麼:
- id屬性被序列化到JSON作爲
- id屬性被編碼成是「活動%2F1」路線「活動/ 1」
- ServiceStack優先考慮基於URL的id屬性,所以我的字符串獲得了直接對RavenDb無用的編碼值。
的選擇我所知道的:
- 更改骨幹張貼到「/活動」,讓JSON串行器踢
- 變化RavenDb ID生成使用連字符,而不是斜線
- 讓我Id屬性解析對集編碼爲%2F和轉換成斜線
兩人都在我要麼失去RESTfuln缺點在我的API中,這是不受歡迎的,或者我不遵循RavenDb慣例,這些慣例通常是明智的狐狸。另外,我個人喜歡斜線。
所以我想知道是否有任何其他選項在服務棧中,我可以用來排序這個問題涉及較少的妥協?無論是串行器定製或通配符路由在我的腦海....
感謝這個馬特。那麼你是從GET返回一個整數ID:/ api/users? – Chris
不,我發現它太笨拙操縱結果集,所以我只是返回完整的字符串Id。客戶端應用程序保留完整的字符串ID,但是當它使用id生成一個url時,它會使用類似id.split(「/」)[1] –