org.springframework.web.HttpRequestMethodNotSupportedException

时间:2017-03-11 00:11:26

标签: javascript angularjs spring rest

在将数据发布到服务器时获取异常需要帮助,尽管GET方法在同一REST资源中正常工作。代码如下;早期的关注得到了赞赏。

REST端点

@RestController
@RequestMapping("/trading-api")
public class MemberMessageResource {

private final Logger log = LoggerFactory.getLogger(MemberMessageResource.class);

@Inject
MemberMessageService service;   

@RequestMapping(value = "/messages/reply/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<MemMessage> replyMemeberMessage(@RequestBody MemMessage msg)
        throws URISyntaxException {

    log.info("REST Request to reply a message : {" + msg.toString() + " }");

        MemMessage result = msg;        

        return new ResponseEntity<MemMessage>(result, HttpStatus.OK);   
    }
}

MessageService.js

'use strict';

angular.module('nkApp').factory(
    'messagesService',
    [
    '$http',
    '$q',

    function($http, $q) {

        var REST_SERVICE_URI = '/trading-api/messages/';

        var factory = {         
        replyMemeberMessage : replyMemeberMessage           
        };

        return factory;        

        function replyMemeberMessage(message) {
        console.log('Replying Message : ', message);
            var deferred = $q.defer();
            $http.post(REST_SERVICE_URI + "reply/" + message)
                .then(
                function (response) {
                    deferred.resolve(response.data);
                },
                function(errResponse){
                    console.error('Error while Replying Message');
                    deferred.reject(errResponse);
                }
            );
            return deferred.promise;
        }       
    } ]);

控制台错误

2017-03-10 23:49:21.515  WARN 11764 --- [nio-8080-exec-8] o.s.web.servlet.PageNotFound             : Request method 'POST' not supported

浏览器错误

{"timestamp":1489189761519,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/trading-api/messages/reply/[object%20Object]"}

1 个答案:

答案 0 :(得分:0)

您的邮件对象不应该是您的网址的一部分,它应该是您的请求正文。而不是添加到url字符串,只需将其作为角度javascript函数中的数据参数传递:

$http.post(REST_SERVICE_URI + "reply/", message)