通过REST控制器中的URL获取空ID到后端

时间:2019-03-05 11:40:17

标签: java angularjs spring rest

我将ID Null传递给后端,这是从前端传递的参数

    this.overAllSummery = function(offset,limit,search,colName,order,id){

    var url = 'api/dashboard/summary/'

        if(offset!= undefined){
            url=(url.indexOf("?") > -1)?url+"&offset="+offset:url+"?offset="+offset;
        }
        if(limit != undefined){
            url=(url.indexOf("?") > -1)?url+"&limit="+limit:url+"?limit="+limit;
        }
        if(search!=undefined && search!=""){
            url=(url.indexOf("?") > -1)?url+"&search="+search:url+"?search="+search;
        }
        if(colName != undefined){
            url=(url.indexOf("?") > -1)?url+"&colName="+colName:url+"?colName="+colName;
        }
        if(order != undefined){
            url=(url.indexOf("?") > -1)?url+"&order="+order:url+"?order="+order;

        }
        if(id != undefined){
            url=(url.indexOf("?") > -1)?url+"&id ="+id:url+"?id ="+id;
        }
        alert(id);
        var promise = $http({
            method : 'GET',
            url : url,
            headers : {
                'Content-Type' : 'application/json'
            },
            cache : false
        }).then(function (response) {
            return response;
        });
        return promise;     
    };

上面整个都是使用AngularJS的前端服务,并传递URL来调用后端,因为我传递了不同的参数,所以除了ID之外,我都将所有参数传递到了后端,并且基于ID,我必须从数据库中获取记录。

    @RequestMapping(value = "/summary", method = RequestMethod.GET, produces="application/json")
public ResponseEntity<List<OverAllSummery>> overAllSummery(HttpServletRequest request,@RequestParam(value="offset",required=false) Integer offset,@RequestParam(value="limit",required=false) Integer limit,
@RequestParam(value="search",required=false) String search,@RequestParam(value="colName",required=false) String colName,@RequestParam(value="order",required=false) String order,
@RequestParam(value="id",required=false) Long id){

try {

    return new ResponseEntity<List<OverAllSummery>>(DashbordService.overAllSummery(offset,limit,search,colName,order,id), HttpStatus.OK);
} catch (Exception exception) {
    logger.error("Error retriving all categories", exception);
    return new ResponseEntity<List<OverAllSummery>>(HttpStatus.INTERNAL_SERVER_ERROR);
}

上面是我正在使用的其余控制器,在调试模式下,调用正在传递给后端,但ID为空,并且前端控制台中显示404。

enter image description here

在警报中添加URL之后,您可以看到ID = 1,但是在调用后,该ID变为null

enter image description here

您可以在上方看到API中的ID

3 个答案:

答案 0 :(得分:1)

从网址中删除多余的空间后,您能否检查。网址中不应包含空格。

Remove this extra space

答案 1 :(得分:0)

Runtime.getRuntime().exec("cat /u01/app/oracle/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/managed/logs/managed.out");您没有在requestMapping中将id添加为参数

添加{id} @RequestMapping(value = "dashboard/summary" ...)

您调用@RequestMapping(value = "dashboard/summary/{id}" ...)

的api

答案 2 :(得分:0)

HTTP中的错误404绝对意味着服务器(后端)不知道该URL,您正在尝试访问。由catch块产生的内部服务器错误是HTTP 500,因此后端未产生异常。因此,首先要检查的是您实际尝试访问的URL。顺便说一句,尝试使用'/ api / dashboard / summary',而不是现在在前端使用的。