IDが
public string ID {get;set;}
activities/1
(これはRavenDBからのものです)。
ServiceStackAppHostに次のルートを登録しています
Routes
.Add<Activity>("/activities")
.Add<Activity("/activities/{id}");
バックボーンアプリを使用して、RESTサービスにPOSTおよびPUTします。
箱から出して何が起こるか:
- idプロパティは「activities/1」としてjsonにシリアル化されます
- idプロパティは、「activities%2F1」としてルートにエンコードされます
- ServiceStackはURLベースのidプロパティを優先するため、私の文字列はRavenDbに直接使用されないエンコードされた値を取得します。
私が知っているオプション:
- バックボーンを変更して「/activities」に投稿し、JSONシリアライザーを起動させます
- スラッシュではなくハイフンを使用するようにRavenDbIDの生成を変更します
- セットでエンコードされた%2FのIdプロパティを解析し、スラッシュに変換します
どちらにも、APIのRESTfulnessが失われるという欠点があります。これは望ましくないか、RavenDbの規則に従わないためです。また、私はスラッシュを持つことを個人的に好みます。
それで、妥協の少ないこの問題をソートするために使用できるサービススタックの他のオプションがあるかどうか疑問に思っていますか?シリアライザーのカスタマイズまたはワイルドカードルーティングのいずれかが私の頭の中にあります。