2016-09-29 76 views
0

我正在使用改造@POST一個新的用戶對象到我的服務器。用戶名是數據庫表中的唯一鍵。如果我使用唯一的用戶名執行異步調用,則會將該條目添加到用戶表中。答案是成功的。改造 - 知道POST何時失敗

但是,如果我嘗試執行具有現有用戶名的用戶的呼叫,則該條目不會添加到數據庫表(如預期)但是響應成功。在所有情況下,我都獲得了成功的迴應。

如何通知/檢查操作是否成功?如果創建/更新/刪除調用成功反映在數據庫中?

端點:

@POST("user") 
Call<User> saveUser(@Body User m); 

樣品電話:

call.enqueue(new Callback<User>() { 
      @Override 
      public void onResponse(Call<User> call, Response<User> response) { 

       try { 
        if(response.isSuccessful()) { 

         Log.i(Constants.LOG, response.raw().toString()); 
        } 
       } catch (Exception e) { 
        Log.e(Constants.LOG, e.toString()); 
       } 
      } 

原始響應輸出中的所有場景:

Response{protocol=http/1.1, code=200, message=OK, url=http://myapi.com/user} 
+0

每你的服務器返回狀態碼200嗎? –

+0

如果您成功地點擊網絡服務,無論您的工作是否完成,您每次都會收到200個狀態碼。我建議你把日誌放在你的服務器代碼中,看看事情發生了什麼,處理你的異常併爲客戶端返回一個合適的響應,這樣你就會失敗或者失敗。 –

+0

好的,但我如何檢查操作是否成功?在我的休息應用程序中,如果使用郵遞員測試我的電話,我可以返回成功/不成功的郵件。如何使用改造返回這樣的信息? – Santiago

回答

0

行,所以我終於找到了如何解決這個問題。在我的REST API我只好打電話給status併發送定製code

res.status(300).send({ error: 'Something went wrong' }); 

在添加重複的用戶的情況下,響應是不成功的,我得到的原始輸出:

Response{protocol=http/1.1, code=300, message=Internal Server Error, url=http:///myapi.com/user}