当通过第三方服务验证的用户访问spring控制器get rest api时,会多次调用该api

c7rzv4ha  于 2021-09-30  发布在  Java
关注(0)|答案(1)|浏览(313)

我有一个spring应用程序(比如servicea),它只有一个执行管理相关操作的用户。servicea有自己的ui(Angular )。该应用程序还为通过第三方服务(比如serviceb)认证的其他用户提供服务。serviceb有自己独立的ui(flutter)。
当serviceb想要访问servicea的RESTAPI时,它会发送一个jwt访问令牌。servicea处理此令牌,如果获得授权,将允许访问api。已为servicea配置jwt令牌筛选器
servicea有一个用于get操作的restapi。当servicea的管理员用户访问此api时,端点工作正常。然而,当get请求来自serviceb时,api被调用三次。api输出结果为json,如下所示。。。。
{//content}{//content}{//content}
由于这是无效的json格式,第三方ui无法处理输出。
使用 Postman 发送请求也显示出同样的行为。你知道为什么api会被多次调用吗?
临时解决办法:
GetRESTAPI的签名如下所示。。。。
public responseentity getresult(httpservletrequest请求,httpservletresponse响应,@requestparam长id)
我将RESTAPI更改为post,如下所示(使用了requestbody)。。。
public responseentity getresult(httpservletrequest请求,httpservletresponse响应,@requestbody tempobj obj)
现在我很高兴RESTAPI只被调用一次。还在想为什么get会有问题

5ktev3wc

5ktev3wc1#

临时解决办法:
GetRESTAPI的签名如下所示。。。。
public responseentity getresult(httpservletrequest请求,httpservletresponse响应,@requestparam长id)
我将RESTAPI更改为post,如下所示(使用了requestbody)。。。
public responseentity getresult(httpservletrequest请求,httpservletresponse响应,@requestbody tempobj obj)
现在RESTAPI只调用一次。
还在想为什么get会有问题

相关问题