gpt4 book ai didi

java - 我可以在 Controller 级别添加请求参数并将其转发到另一个网站吗?

转载 作者:行者123 更新时间:2023-12-02 10:10:04 24 4
gpt4 key购买 nike

这个想法是,我收到 POST 请求,其中已经包含一些参数例如,汽车名称和价格

我需要添加一些客户不应该知道的参数(例如汽车的VIN,客户在购买之前不应该知道)

然后,添加参数后,我想将此请求转发到另一个站点,其中包含我已传递的所有数据(汽车名称、价格、vin)

有没有办法在 Controller 级别而不是过滤器级别实现?

@RequestMapping(value = "/abc")
public void ABC(final HttpServletRequest request) {
request.getParameterMap().put("vin", VIN_CODE); // cannot do that because it is read-only
return "forward:https://completelyanothersite.com";
}

编辑:根据评论,转发不是解决方案,而是重定向才是解决方案

最佳答案

(据我所知)不太脏的方法是扩展请求:

public class WrappedHttpServletRequestWrapper extends HttpServletRequestWrapper
{
private final Map<String, String[]> modifiableParameters;
private Map<String, String[]> allParameters = null;


public WrappedHttpServletRequestWrapper (final HttpServletRequest request,
final Map<String, String[]> additionalParams)
{
super(request);
modifiableParameters = new TreeMap<String, String[]>();
modifiableParameters.putAll(additionalParams);
}

@Override
public Map<String, String[]> getParameterMap()
{
// allParameters contains old parameters + the ones you added
return Collections.unmodifiableMap(allParameters);
}
//... other overriden methods
}

并使用它来添加您的参数。这是reference .

以下是您将如何使用它:

Map<String, String[]> extraParams = new TreeMap<String, String[]>()
HttpServletRequest wrappedRequest = new WrappedHttpServletRequestWrapper(request, extraParams);
request.getRequestDispatcher("url").forward(wrappedRequest, response);

关于java - 我可以在 Controller 级别添加请求参数并将其转发到另一个网站吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55066807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com