搭建restful服务中遇到的坑

2018-07-21  本文已影响0人  woniu95

    前几天,由于公司的后台管理系统要搭建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中加上如下的拦截器处理一下就可以:

<filter>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
</filter>  
<filter-mapping>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <servlet-name>ROOT</servlet-name>  
</filter-mapping>

    至此,问题解决。

上一篇下一篇

猜你喜欢

热点阅读