搭建restful服务中遇到的坑

    前几天,由于公司的后台管理系统要搭建restful服务,用来规范api和保持接口的可读性,本以为简简单单就可以搞定的事情,结果花了一下午才搭建好,这里分享一下搭建中遇到的坑。


    一。 在进行get和post请求时一切正常,但是在delete请求时,发现客户端报405错误,405是服务器不允许这个方法,报错信息如下:


图一

图二

    可以看到这里发送了两个请求,一个options,一个post,这个post请求是delete变得,网上查了下资料,在进行跨域请求的时候,浏览器会自动的发送一个option请求,在接着发送你要发送的请求,解决方案如下:


图三

    在Nginx中加上如下配置,但是加上后发现还是不行,这个时候就有点懵逼了,问了下前端的同学,发现在Nginx中少了一个配置,如下所示:


图四

    这里只有option,post,get方法,加上put和delete,至此,delete请求发送正常。

    二。本以为delete请求都正常发送了,put请求应该也能正常的发送,但是,在测试put请求的时候,出现了拿不到参数的问题,这下有懵逼了,明明delete请求都是好的,为什么put请求会出问题呢?
    后来,Google一下发现是springmvc的问题,springmvc会把put请求拦截掉,所以拿不到参数,只要在web.xml中加上如下的拦截器处理一下就可以:

  
    HiddenHttpMethodFilter  
    org.springframework.web.filter.HiddenHttpMethodFilter  
  
  
    HiddenHttpMethodFilter  
    ROOT  

    至此,问题解决。

你可能感兴趣的:(搭建restful服务中遇到的坑)