《Angular之400错误解析》

前言:

                                                           千锤万凿出深山,烈火焚烧若等闲。

正文:

   一。问题描述

   二。问题定位

        不通过nginx代理,直接使用ip+端口可以正常显示,但是一旦走nginx代理的地址,便出现400错误,原因解析:http://ip:port/library/resources/book/getBookBasicByISBN/{isbn}?isbn=9787513517409

          restful风格与表单提交方式混搭,一旦走nginx代理就无法通过真正后端服务,因为nginx代理会将花括号解析,此时url地址传递到真正后端时就不一致,继而报400错误。

         分析上面的url:http://ip:port/library/resources/book/getBookBasicByISBN/{isbn},遵循restful风格的url地址拼接,传递的参数是{isbn},一旦前端传递参数过去之后,url地址变成了http://ip:port/library/resources/book/getBookBasicByISBN/9787513517409

restful风格。

         J2EE规范@PathParam,Spring中可以用@PathVariable,最终的URL是替换了{isbn}的url

    三。解决方案

        JAVA分为三个版本:JAVASE、JAVAEE、JAVAME,library采用JAVAEE,企业级应用,JAVA的规范有十三种,library采用jersery和EJB。

        (1)Jersey后端,restful风格注解应使用@PathParam:

        Spring后端,restful风格注解应使用@PathVariable:

        (2)传统的表单提交方式:

http://ip:port/library/resources/book/getBookBasicByISBN前端拼接之后,完整的URL地址转变为:

http://ip:port/library/resources/book/getBookBasicByISBN?isbn=9787513517409表单形式。注解应使用J2EE规范的@QueryParam或spring的@RequestParam,最终的url为xxxx?userId=yyyy

        Jersey后端,表单提交使用@QueryParam:

        spring后端,表单提交使用@RequestParam:

 

结语:

                                                                    宝剑锋从磨砺出,梅花香自苦寒来。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值