1

NancyFX を使用して、Web サイト用の REST API をホストしています。データベースにユーザーテーブルがあり、更新したい:

1) 完全なユーザー更新 - すべてのフィールドを更新します 2) 部分的なユーザー更新 - 1 つのフィールドのみを更新します

Nancy 0.7 を使用しているため、現在 PATCH をサポートしていません。PUT しか使用できません。

APIを次のように定義しました

PUT ["/user/{username}"] - for complete update using passed-in user object value
PUT ["/user/{username}/id/{newid}"] - for updating user id only

ただし、2番目のAPIを呼び出すと(IDのみを更新するため)-ナンシーによってトラップされることはありません-ナンシーは常にメソッドを呼び出してユーザーを完全に更新します、つまり PUT ["/user/{username}"]

API を宣言する順序に関係なく、ナンシーは常に完全なユーザー更新エンドポイントのみを呼び出します。

クライアント アプリケーションから PUT を使用して両方の API を適切に使用できるように、助けが必要です。

4

2 に答える 2

1

一般に、URI の動的データ コンポーネントを UrlEncode することをお勧めします。

だから、あなたの場合:

PUT - /user/xyz@yahoo.com/id/123

になるだろう

PUT - /user/xyz%40yahoo.com/id/123 

Nancy が値のデコードを担当するので、動的オブジェクトから値を抽出すると、元の値parametersに戻ります。xyz@yahoo.com

于 2012-09-26T08:18:04.177 に答える
0

問題が見つかりました-ユーザー名の「@」文字-特殊文字に関係しています。

ユーザー名に「@」文字が含まれている場合、ナンシーは PUT のルートと一致しません - /user/xyz@yahoo.com/id/123 から PUT ["/user/{username}/id/{newid}"]

PUT のルートと常に一致します - /user/xyz@yahoo.com/id/123 から PUT ["/user/{username}"]

于 2012-09-25T19:25:40.880 に答える