如何检查httpservletrequest是否包含Java中的密钥(使用Spring Boot)


HttpServletRequest httpReq = (HttpServletRequest) request;
if (httpReq.getHeader("device").equals("web1")) {
    chain.doFilter(request, response);
}

我想知道如何检查请求标题中的键"device"是否存在?

注意:不想使用getHeaderName返回所有标题名称的枚举此请求包含并迭代的标题。

getParameterMap().containsKey("device")在这里不起作用。

来自javadoc的HttpServletRequest.getHeader(String name)

如果请求不包括指定名称的标题,则 方法返回null

因此,基本的空检查就足够了:

boolean deviceHeaderExists = httpReq.getHeader("device") != null;

稍微读取线之间的读数,如果您想接受强制性的device标题,则可以在休息呼叫中的注释中对其进行编码。示例:

@GetMapping("/something")
public void doSomething(@RequestHeader("device") @NotNull String deviceName) {
  // your logic here
}

最新更新