Как сохранить разрывы строк в теле запроса, которое отправляется в контроллер остатка Spring Boot - PullRequest
2 голосов
/ 12 апреля 2019

Я в замешательстве.

Я отправляю строку через запрос Http Post на контроллер отдыха Spring Boot.

Строка содержит разрывы строк, которые представлены '\ n'.

Контроллер использует "обычный / текстовый".

Клиент - это программа на python, которая читает строку из поля в объекте json, который читается из текстового файла.

Объект json в текстовом файле выглядит следующим образом: {"content": "Multi \ n line \ n string"}

Однако символы новой строки экранируются, если они поступают вПриставьте контроллер к '\\ n', чтобы они отображались как обычно '\ n' как часть строки.

Я попытался отправить строку из python, которая не читается из текстового файла.Вместо этого я предоставляю строку direct в переменной с символами новой строки:

payload = "new \n line \n string"
headers = {'content-type': 'text/plain'}

r = requests.post(url, data=payload, headers=headers)

Но '\ n' экранируется в '\\ n', что превращает его в обычную часть строки, которая отображается как "new \".n строка \ n строка "вместо" строка новой строки ".

Но если я отправлю строку через Почтальон, как это, новые строки будут интерпретированы как '\ r \ n' в строке, которая поступает вконтроллер (текстовый / простой заголовок установлен):

Post via Postman

Поэтому мой конкретный вопрос: как отправить строку, которую я прочитал, из поля json изpython для контроллера остальных, чтобы java / spring-boot не экранировал символ '\ n', а интерпретировал его как символ новой строки.Есть ли способ отправить строку из Python правильно (предпочтительный способ) или я должен сделать некоторые преобразования / кодирования на стороне сервера Spring?

Если мне нужно сделать преобразование / кодирование на стороне сервера Spring, какчтобы убедиться, что если я отправлю сообщение с моим клиентом Python на сервер, который я не контролирую, правильно ли будут интерпретироваться символы новой строки?Существуют ли какие-либо стандарты или они зависят от пользовательского преобразования / кодировки на стороне сервера?

Контроллер выглядит следующим образом:

@RestController
class SmoeController {

    @PostMapping("/some-endpoint",  consumes = "text/plain", produces = 
                 "text/plain")
    String newEmployee(@RequestBody String text) {
        System.out.println(text);
        return text;
    }
...