“无效”是指不期望的参数。
例如:
@Path("/")
public interface ExampleInterface {
@GET
@Path("/example")
public Response test(
@QueryParam("param1") String param1,
@QueryParam("param2") String param2
);
}
然后我打电话 ".../example?param3=foo"
您可以检查使用ContainerRequestFilter并将传递的参数与定义的参数进行比较:
@Provider
public class RequestParamFilter implements ContainerRequestFilter {
@Context
private ResourceInfo resourceInfo;
@Context
private HttpServletRequest servletRequest;
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
Set<String> validParams = new HashSet<String>();
Method method = resourceInfo.getResourceMethod();
for (Annotation[] annos : method.getParameterAnnotations()) {
for (Annotation anno : annos) {
if (anno instanceof QueryParam) {
validParams.add(((QueryParam) anno).value());
}
}
}
for (String param : servletRequest.getParameterMap().keySet()) {
if (!validParams.contains(param)) {
requestContext.abortWith(Response.status(Status.BAD_REQUEST).build());
}
}
}
}
不要忘记ServletRequest#getParameterMap返回一个Map,该Map包含查询字符串参数和在请求正文中传递的参数。因此,也许您需要自己解析查询字符串。
注意:这不会加快您的应用程序的速度。
我想验证一个发出请求的用户。为此,我有两个过滤器:AuthenticationFilter和authorizationfilter。AuthenticationFilter从请求中提取令牌并从数据库中查找用户。AuthorizationFilter检查该用户(由上一个筛选器检索)是否具有必要的权限。我有两个可能的解决方案,想知道每一个的利弊,我应该使用哪一个。我还需要访问实际业务逻辑中的用户。我的
当im tryin通过我的JAX-RS API得到一个Post请求时,它总是发送一个空值。我不知道Jackson注释是否不正确,或者是否需要使用ObjectMapper。 以下是我的课程: 这是B班 我的JSON文件: 我想让Jackson读取该文件,然后将对象类型ClassA添加到列表中(问题是甚至没有读取它)。这是API代码: 我已经添加了文件
问题内容: 我正在尝试使用HttpServletRequest从发布的表单中检索传递给jax- rs的一些参数。但是,我的请求对象始终为我的参数返回空值。我不是要这样做吗?我已经在下面发布了代码,并发送了示例请求。 这是我的服务: 请求示例: 问题答案:
假设我有一个简单的Java数据类: 注意:在实践中,我使用不可变来生成这个,但是为了简单起见,我在这里显示了一个POJO。 要记录响应的模型,即使返回类型是,我也可以引用中的类: 基于此,斯威格将正确记录以下内容: 型号: 示例值: 为了记录主体的模型,我直接在代码中使用类,Swagger找到它并根据需要记录它: 我也想支持部分更新。我不能使用POJO本身,因为POJO中的所有字段都是强制性的,当
我想通过Spring过滤器或方面记录超文本传输协议请求中的请求参数。我尝试了不同的方法,但请求参数为空或未调用方法。我使用的是POSTMAN,它是一个POST请求。 http://localhost:8080/available data 请求正文示例: {“keyUserAgent”:“CFNetwork/1209 Darwin/20.2.0”,“locale”:“en_US”,“eid”:“8
直接打印axios的请求拦截的config时是包含那些值为undefined的参数的,但是在浏览器和服务端中却没有了,请问这是哪个环节的问题?应该如何避免这种情况? 打印config的时候params是包含latitude和longitude的 Chrome网络中却不包含这两个参数