является значительным и, конечно, не означает пробел.

я есть этот метод контроллера Spring REST:

@ApiOperation("My method")
@RequestMapping(method = RequestMethod.POST, value = "/myMethod")
public void myMethod(@RequestParam("myParam") String myParam) {
...
}

REST-клиент генерируется с использованием CLA-кода swagger codegen с языкомЯва и библиотекаresttemplate:

public void myMethod(String myParam) throws RestClientException {
    ...
    return apiClient.invokeAPI(path, HttpMethod.POST, queryParams, postBody, headerParams, formParams, accept, contentType, authNames, returnType);
}

И исходный код дляApiClient#invokeAPI - который также генерируется - это:

public <T> T invokeAPI(String path, HttpMethod method, MultiValueMap<String, String> queryParams, Object body, HttpHeaders headerParams, MultiValueMap<String, Object> formParams, List<MediaType> accept, MediaType contentType, String[] authNames, ParameterizedTypeReference<T> returnType) throws RestClientException {
    updateParamsForAuth(authNames, queryParams, headerParams);

    final UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(basePath).path(path);
    if (queryParams != null) {
        builder.queryParams(queryParams);
    }

    final BodyBuilder requestBuilder = RequestEntity.method(method, builder.build().toUri());
    if(accept != null) {
        requestBuilder.accept(accept.toArray(new MediaType[accept.size()]));
    }
    if(contentType != null) {
        requestBuilder.contentType(contentType);
    }

    addHeadersToRequest(headerParams, requestBuilder);
    addHeadersToRequest(defaultHeaders, requestBuilder);

    RequestEntity<Object> requestEntity = requestBuilder.body(selectBody(body, formParams, contentType));

    ResponseEntity<T> responseEntity = restTemplate.exchange(requestEntity, returnType);
    ...
}

Теперь, когда я звонюmyMethod передавая строку, содержащую+ войти в системуmyParamна сервере я получаю символ пробела вместо+, Кажется, это проблема кодирования, так как знак плюс зарезервирован в параметрах запроса URL, чтобы заменить символ пробела. Это ошибка из кодекса Swagger или из классов Spring или совсем нет? Как я могу это исправить?

РЕДАКТИРОВАТЬ:

Определение Swagger похоже (генерируется из Spring REST-контроллера):

{
  "swagger": "2.0",
  ...
  "paths": {
    "/myMethod": {
      "get": {
        "operationId": "myMethod",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "myParam",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
           ...
        }
      }
    }
 ...
}

РЕДАКТИРОВАТЬ:

Подобные проблемы, похоже, связаны с кодированием переменных пути. Когда я прохожу"bla:bla/bla" к переменной пути специальные символы: а также/ не будет закодирован, но будет отправлен как есть, что приведет к ошибке на стороне сервера, поскольку отображение не найдено.

Ответы на вопрос(1)

Ваш ответ на вопрос