如何使用$ resource从Angular JS创建函数调用@POST RESTful服务

时间:2014-07-15 11:50:00

标签: java angularjs rest post

我试图从Angular-JS页面调用Java后端的REST服务。我可以成功获取GET数据,但无法调用@POST资源。

例如,在Java后端这里是我的RESTful服务方法 -

@POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public User create(User user) {
        User usr1 = new User();
        usr1.setId(3);
        usr1.setFirstName("John");
        usr1.setLastName("Paul");

        return usr1;
    }

在AngularJS部分,这里是服务工厂:

var app = angular.module('app', ['ngResource']);

app.factory('UsersFactory', function ($resource) {
    return $resource('http://localhost:8080/demoApp/service/users', {}, {
        query: { method: 'GET', isArray: true },
        create: { method: 'POST'}
    })
});

这是AngularJS控制器:

app.controller('userCreationCtrl', ['$scope', 'UsersFactory', '$location',
    function ($scope, UsersFactory, $location) {

        $scope.createNewUser = function () {         
            UsersFactory.create($scope.user);            
        }
   }]);

错误显示在Chrome浏览器的Javascript控制台中 -

XMLHttpRequest cannot load http://localhost:8080/demoApp/service/users. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.

1 个答案:

答案 0 :(得分:0)

您的问题是因为在服务休息时您可以允许CORS,因此您必须在服务器端更改中更改或添加一些配置,或者更简单的方法是将html代码放在同一位置url是你的服务器,localhost:8080(你的html代码在localhost:63342)

在您的服务器端,您必须添加" Access-Control-Allow-Origin = *"或类似的东西