素材巴巴 > 程序开发 >

《Angular之400错误解析》

程序开发 2023-09-17 14:58:06

前言:

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

正文:

   一。问题描述

   二。问题定位

        不通过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:

 

结语:

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


标签:

上一篇: 前端js禁止页面返回 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。