HTTP 400 BAD_REQUEST между докеризованным Django и сервисом Spring boot

Я запускаю Django и приложение Spring boot как Dockerised сервисы с одним и тем же томом Docker и сетью.

Для одного из требований я делаю запрос от моего сервиса Django к сервису Spring boot, используя модуль запроса Python, как показано ниже

res = requests.post(
            f'http://{spring_host}:8080/getTranslatedAsFile/',
            data={
                'document-json-dump': json.dumps(data),
                "doc_req_res_params": json.dumps(res_paths),
                "doc_req_params": json.dumps(params_data),
                  })

Здесь data, res_paths и params_data представляют собой python dicts. data содержит ключи и значения, зависящие от содержания документа. Больше содержание (например, больше слов, предложений) больше будет ключей и значений data.

Запрос получен службой Spring boot на контроллере, как показано ниже,

@PostMapping(value = "/getTranslatedAsFile/")
    public String getTranslatedAsFile(@RequestParam("doc_req_params") String docReqParams,
                                      @RequestParam("doc_req_res_params") String docReqResParams,
                                      @RequestParam("document-json-dump") String documentJsonDump)
            throws IOException {

        ObjectMapper objectMapper = new ObjectMapper();
        Document document = objectMapper.readValue(documentJsonDump, Document.class);

        ObjectMapper objectMapper1 = new ObjectMapper();
        DocumentReqParameters documentReqParameters = objectMapper1
                                                .readValue(docReqParams, DocumentReqParameters.class);

        ObjectMapper objectMapper2 = new ObjectMapper();
        DocumentReqResourceParameters documentReqResourceParameters = objectMapper2
                                                .readValue(docReqResParams, DocumentReqResourceParameters.class);

        return  documentProcessService.translate(documentReqParameters, documentReqResourceParameters, document);
        
    }

Когда я делаю запрос на документ с меньшим содержанием (< 50000 слов), т.е. data с меньшим количеством ключей и значений, я получаю HTTP 200 response от службы Spring boot и могу обработать данные ответа.

Но когда я делаю запрос на документ с большим содержанием (приблизительно > 50000 слов), я получаю ответ HTTP 400 BAD_REQUEST. Ниже показан журнал ошибок из Spring boot,

spring-service-web1_1  | 2022-08-14 03:02:32.756  INFO 49 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
spring-service-web1_1  | 2022-08-14 03:02:32.762 DEBUG 49 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : POST "/getTranslatedAsFile/", parameters={}
spring-service-web1_1  | 2022-08-14 03:02:32.770 DEBUG 49 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.ailaysa.translate.v1.controller.FileController#getTranslatedAsFile(String, String, String)
spring-service-web1_1  | 2022-08-14 03:02:32.788 DEBUG 49 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Could not resolve parameter [0] in public java.lang.String com.ailaysa.translate.v1.controller.FileController.getTranslatedAsFile(java.lang.String,java.lang.String,java.lang.String) throws java.io.IOException: Required String parameter 'doc_req_params' is not present
spring-service-web1_1  | 2022-08-14 03:02:32.792  WARN 49 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'doc_req_params' is not present]
spring-service-web1_1  | 2022-08-14 03:02:32.793 DEBUG 49 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 400 BAD_REQUEST
spring-service-web1_1  | 2022-08-14 03:02:32.801 DEBUG 49 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for POST "/error", parameters={}
spring-service-web1_1  | 2022-08-14 03:02:32.804 DEBUG 49 --- [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.ailaysa.translate.v1.controller.ErrorController#handleError(HttpServletRequest)
spring-service-web1_1  | 2022-08-14 03:02:32.819 DEBUG 49 --- [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver : Selected '*/*' given [*/*]
spring-service-web1_1  | 2022-08-14 03:02:32.980 DEBUG 49 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Exiting from "ERROR" dispatch, status 400

Любое предложение по решению этой проблемы будет очень полезным.

Вернуться на верх