gpt4 book ai didi

java - 如何在过滤器方法中使用 ContainerRequestContext 获取 REST api 的有效负载

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:24 33 4
gpt4 key购买 nike

我有一个过滤器,POST REST api 通过该过滤器,我想在过滤器中提取我的有效负载的以下部分。

{
"foo": "bar",
"hello": "world"
}

过滤代码:-

public class PostContextFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext)
throws IOException {
String transactionId = requestContext.getHeaderString("id");
// Here how to get the key value corresponding to the foo.
String fooKeyVal = requestContext. ??
}
}

我没有看到任何使用 ContainerRequestContext 对象将有效负载获取到 api 的简单方法。

所以我的问题是如何在我的负载中获取与 foo 键对应的键值。

最佳答案

虽然过滤器主要用于操纵请求和响应参数,如 HTTP header 、URI 和/或 HTTP 方法,但拦截器旨在通过操纵实体输入/输出流来操纵实体。

A ReaderInterceptor允许您操作入站 实体流,即来自“电线”的流。使用 Jackson 解析入站实体流,您的拦截器可能是这样的:

@Provider
public class CustomReaderInterceptor implements ReaderInterceptor {

// Create a Jackson ObjectMapper instance (it can be injected instead)
private ObjectMapper mapper = new ObjectMapper();

@Override
public Object aroundReadFrom(ReaderInterceptorContext context)
throws IOException, WebApplicationException {

// Parse the request entity into the Jackson tree model
JsonNode tree = mapper.readTree(context.getInputStream());

// Extract the values you need from the tree

// Proceed to the next interceptor in the chain
return context.proceed();
}
}

answer还有这个answer也可能与您的问题有关。

关于java - 如何在过滤器方法中使用 ContainerRequestContext 获取 REST api 的有效负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476155/

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