2016-09-22 108 views
0

我正在使用Spring REST API端点创建Spring引导服务。但我陷入了一个非常简单的休息电话。我休息控制器如下:Spring REST端点:404请求的资源不可用

@RestController 
@RequestMapping(value={"/reportservice"}) 
public class ReportingMessageController { 

    @Autowired 
    private ReportService reportService; 

    @RequestMapping(value = {"/reports" }, method = RequestMethod.GET, produces = { 
        MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE }) 
    public ResponseEntity<ResponseMessage> getReport(@RequestParam(value="eaid", required=true) String eaid, 
      @RequestParam(value="source", required=false) String source, 
      @RequestParam(value="userid", required=false) String userid, 
      @RequestParam(value="org", required=false) String org, 
      @RequestParam(value="startdate", required=true) Date startDate, 
      @RequestParam(value="enddate", required=true) Date endDate, 
      @RequestParam(value="page", required=false) int pageid){ 
     ReportQueryParams params = new ReportQueryParams(); 
     params.setEaid(eaid); 
     params.setSid(sid); 
     params.setSource(source); 
     params.setUserid(userid); 
     params.setOrg(org); 
     params.setStartdate(startDate); 
     params.setEnddate(endDate); 
     params.setPageid(pageid); 
     System.out.println(params); 
     ResponseMessage response = reportService.getReports(params); 
     return new ResponseEntity<ResponseMessage>(response, HttpStatus.OK); 
    } 
} 

服务类:

@Component 
public class ReportService { 

    public ResponseMessage getReports(ReportQueryParams params){ 
     return new ResponseMessage(); 
    } 
} 

ResponseMessage类是简单的POJO

我的URI是

http://localhost:8080/reportservice/reports?eaid=6764623946&source=ABC&userid=abhattacherji&org=trpo&startdate=8/11/2016&enddate=9/1/2016&page=1 

和我得到HTTP状态404错误。即使我忽略查询参数,第一部分(/ reportservice/reports)也不起作用。任何潜在客户都会有帮助。提前致谢。

+0

您是否在Web服务器中为您设置了任何上下文路径? –

+0

你可以发布你提出请求的部分,至少发布生成url的部分, – Priyamal

+0

@Priyamal,我从邮递员来调用它。确切地说,我用Accept标头发布的URI作为Application/xml和Application/json –

回答

0

我想你传递错误的日期参数。

例如&startdate=8/11/2016这可能被认为是不同的路径变量。

你需要传递日期参数一样,

@DateTimeFormat(模式= “MM/DD/YYYY”),其中yyyy是年份,MM是月份,DD表示日期

public ResponseEntity<ResponseMessage> getReport(@DateTimeFormat(pattern="MM/dd/yyyy") Date startDate) { 
    ... 
} 

更多细节检查此链接,passing date into request param我做

0

三个转变,它的工作:

  1. 替换@Re questParam与@QueryParam。
  2. 更改日期ans int到字符串
  3. 使值和参数名称相同(如“startdate”而不是“startdate”和“startDate”)。