【问题标题】:How to use session_id for REST calls?如何使用 session_id 进行 REST 调用?
【发布时间】:2019-06-04 18:48:38
【问题描述】:

我正在对一个服务进行多个服务调用。假设我必须对服务进行 10 次 POST 调用。 每个服务都需要 session_id cookie。如果未提供,则服务将生成一个并将其用于所有服务调用。

在我的应用程序中,我连续进行了几次服务调用。我可以在“循环”中再次调用这些调用,但我需要一个不同的 session_id 来进行单次迭代。

在代码中,MyService 组件正在进行服务调用。 该服务的过滤器将生成 session_id。 但是 invoke() 方法可能会被多次调用并且 我希望过滤器为每次调用生成不同的 session_id 调用()方法。 目前,session_id 只生成一次

@Component
class MyService {
    @Autowired
    private RestTemplate restTemplate;

    /**
     * T - is a request type
     * R - is a response class type
    */
    private <T,R> Optional<R> doPost(String url, T request, Class<R> responseType) {
        return Optional.ofNullable(restTemplate.postForObject(url, request, responseType));
    }

    public void invoke() {
         doPost("url1", someRequest1, SomeResponse1.class);
         doPost("url2", someRequest2, SomeResponse2.class);
    }
}

我可以在 invoke() 方法中创建一个 session_id 并确保使用不同的 session_id 来进行这些调用。 invoke() 中的所有服务调用都将具有相同的 session_id,而下一次调用将具有不同的 session_id。但我不确定这种方法是否是实现这一目标的正确方法。

你能建议我使用什么?

【问题讨论】:

    标签: java spring spring-security resttemplate sessionid


    【解决方案1】:

    session_id 由每个客户端生成(如果您从其他 Web 浏览器进行测试,您将看到不同的 session_id),为每个请求接收不同的唯一方法是使会话无效,尽管如果您需要一个 uuid 请求使用听众

    public class ProjectRequestListener implements ServletRequestListener {    
    
     @Override
     public void requestInitialized(ServletRequestEvent requestEvent) {
         requestEvent.getServletRequest().setAttribute("requestId", UUID.randomUUID());
     }
    
     @Override
     public void requestDestroyed(ServletRequestEvent requestEvent) {
        requestEvent.getServletRequest().setAttribute("requestId", null);
     }
    }
    

    并将监听器添加到项目 web.xml

    <listener>
        <listener-class>
        com.project.server.ProjectRequestListener
        </listener-class>
    </listener>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多