如何丰富全球API的要求

发布于 2025-02-03 01:03:03 字数 636 浏览 2 评论 0 原文

我在一个带有NGINX的Tomcat容器上部署了50个API。所有这些都用爪哇(春季)写 每个API都有自己的请求有效载荷。现在,我被要求丰富每个请求 带有其他参数的有效载荷。所有有效负载的参数保持不变。

例如,如果API A期望:

{
    "name":"somename",
    "surname":"somesurname"
}

则应将其更改为

{
    "requester_id":"",
    "reason": "",
    "name":"somename",
    "surname":"somesurname"
}

如果API B期望,

{
    "platenumber":"someplatenumber",
}

:应将其更改为

{
    "requester_id":"",
    "reason": "",
    "platenumber":"someplatenumber",
}

解决方案之一是修改每个API的每个请求主体(50!),这需要一些时间。 因此,我的问题是否有任何方法可以在全球范围内添加其他参数以要求所有API的主体?

I have 50 apis deployed on a tomcat container with nginx in front of it. All of them written in java (spring)
Every api has its own request payload. Now I am asked to enrich every request
payload with additional parameters. The parameters remain same for all payloads.

For instance if api A expects :

{
    "name":"somename",
    "surname":"somesurname"
}

it should be changed to

{
    "requester_id":"",
    "reason": "",
    "name":"somename",
    "surname":"somesurname"
}

if api B expects :

{
    "platenumber":"someplatenumber",
}

it should be changed to

{
    "requester_id":"",
    "reason": "",
    "platenumber":"someplatenumber",
}

One of the solution is to amend every request body of each api (50!) which takes some time.
Hence my question is there any way to add additional parameters globally to request body of all apis?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒中人 2025-02-10 01:03:03

您可以查看@controllerAdvice

import org.springframework.core.MethodParameter;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

@ControllerAdvice
public class MyAdvice implements ResponseBodyAdvice<Object> {

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, 
                                  MethodParameter returnType, 
                                  MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, 
                                  ServerHttpRequest request, 
                                  ServerHttpResponse response) {
        // MODIFY body here
        return body;
    }
}

You can look into @ControllerAdvice

http://www.javabyexamples.com/quick-guide-to-responsebodyadvice-in-spring-mvc

import org.springframework.core.MethodParameter;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

@ControllerAdvice
public class MyAdvice implements ResponseBodyAdvice<Object> {

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, 
                                  MethodParameter returnType, 
                                  MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, 
                                  ServerHttpRequest request, 
                                  ServerHttpResponse response) {
        // MODIFY body here
        return body;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文