2011-08-04 6 views
0

私はユーザーモデルを持っています。私はクライアントが特定のユーザーのために必要なデータを更新するためにコールできるようにRESTful APIを提供しています。以下は、ユーザーデータを更新するために使用したコードとcurlコマンドですが、それはうまくいきません。私のコード/コマンドに何か問題はありますか?PUTを使用してモデルデータを更新する

そして、私はカールを使用して、ルート設定に

PUT  /user/{<\d+>id}/?      Users.update 

// Updates a single user. 
public static void update(Long id) { 
    // Fetch from user from DB 
    User user = safeFindById(id); 

    // Set new values 
    user.edit("user", params.all()); 

    // Persist user 
    user.validateAndSave(); 

    // return the user rendered based on template 
    get(id); 
} 

を以下している - 新しいユーザー

$ curl d '{"email":"[email protected]","password":"secret","firstname":"who","lastname":"is"}' -X POST http://localhost:9001/user/add 

を追加し、ユーザーを更新するには、両方のコマンドは以下の動作しませんでした

$ curl -H "Accept: application/json" -X PUT -d "firstname=test" http://localhost:9001/user/1 

$ curl -H "Accept: application/json" -H "X-HTTP-Method-Override: PUT" -X POST -d "firstname=test" http://localhost:9001/user/1 
+0

表示されるエラーは何ですか?何がうまくいかないの? –

+0

私はちょうど(データモデルなしで)単純なプロジェクトを作成し、カールPUTは正常に動作しています - または少なくともそれはparamsで正しいコントローラメソッドを呼び出しています。あなたが持っているエラー/例外を貼り付けることはできますか? –

+0

エラーは返されませんでしたが、ファーストネームの値は "who"から "test"に変更されませんでした。だから私のカールのコマンドはよく見える? – tom

答えて

0

完全なルートがなく、例外を分析するのは難しいです。さらに、あなたのUser-Objectが実際にファーストネームでファーストネームではないかどうかは分かりません。方法を変更することをお勧めします。

public static void update(Long id, String firstname) { 
    Logger.error(firstname); 
    .... 
} 

したがって、リクエストにエラーがあったかどうかを確認できます。

関連する問題