2014-09-11 63 views
2

我正在嘗試使用AngularJs訪問更新休息方法,但它給了我400 bad request error使用AngularJs訪問Sprint休息方法時的錯誤請求

這是我的代碼。

@RestController 
@RequestMapping("/api/loggedInUser") 
public class UserController { 

@RequestMapping(value = "/{id}",method = RequestMethod.PUT) 
    public AppUser updateLoggedInUser(@RequestBody AppUser user){ 
     return userService.updateAppUser(user); 
    } 

} 

這裏是從AngularJs訪問該服務的代碼:

App.factory('LoggedInUserService', ['$resource', function($resource) { 
     console.log('service injected'); 
     return { 
      getLoggedInUser: $resource('api/loggedInUser', {}, { 
       query: {method: 'GET'} 
      }), 
      updateLoggedInUser: $resource('api/loggedInUser/:id', {}, { 
       update: {method: 'PUT', params: {id: '@id'}} 
      }) 
     }; 
    }]); 

這裏是我的app.js文件訪問服務的代碼。

.run(function($location, $rootScope, LoggedInUserService) { 

      LoggedInUserService.getLoggedInUser.query(function(loggedInUser) { 

       $rootScope.loggedInUser = loggedInUser; 
       console.log($rootScope.loggedInUser.username); 
       if (loggedInUser.role[0].authority === 'ADMIN_ROLE' && loggedInUser.pristineAccess) { 
        $rootScope.loggedInUser.isAdmin = true; 
        $rootScope.pristineAccess = false; 
        LoggedInUserService.updateLoggedInUser.update($rootScope.loggedInUser); 
        $location.path('/admin'); 
       } else { 
        $rootScope.loggedInUser.isAdmin = false; 
        $location.path('/dashboard'); 
       } 
      }); 

     }); 

當我刪除了@RequestBody註釋我沒有得到一個400錯誤,但參數沒有得到填充。

我在這裏做錯了什麼?我在同一個應用程序的另一個地方使用了相同類型的代碼,它工作正常。這裏唯一的區別是rest方法參數參數是一個實體對象而不是pojo。

+0

請解釋一下,在請求時,爲什麼'id'路徑變量你不使用它,並顯示AppUser類和由請求發送的json對象。這將比試圖猜測這一切更簡單... – 2014-09-11 08:40:02

回答

0

添加消耗= MediaType.APPLICATION_JSON_VALUE到控制器方法,並檢查您的文章內容與網頁開發人員工具或螢火蟲或simmilar工具

@RequestMapping(value = "/{id}", consumes = MediaType.APPLICATION_JSON_VALUE,method = RequestMethod.PUT) 
    public AppUser updateLoggedInUser(@RequestBody AppUser user){ 
     return userService.updateAppUser(user); 
    } 
+0

試圖添加它,但得到相同的錯誤。當在螢火蟲中檢查時,我看到一個有效的json對象被傳遞。我覺得它與將json對象轉換爲java對象有關。但不知道如何調試它。 – 2014-09-11 08:09:38

+0

我認爲缺少@PathVariable(「id」) – 2014-09-11 08:11:07

+0

我的印象是,如果它的一個對象我們使用RequestBody,並且它的基本類型是我們使用的pathVariable。即使我不是100%確定。 – 2014-09-11 08:22:20

相關問題