Как использовать CURL для POST Multi-Form File и JSON для Springboot Restful Webservice - PullRequest
2 голосов
/ 26 июня 2019

Я пытаюсь использовать CURL для выполнения запроса POST к следующей конечной точке, которая принимает html-файл и строку json в качестве параметра.

Ниже приведена подпись конечной точки для первой службы, которая создает html.строка, которая затем отправляется во второй микросервис как json:

@PostMapping(path = "/pdf-template", produces = APPLICATION_JSON_VALUE)
    public ResponseEntity<String> bindTemplateData(
            @ApiParam(value = "BindDataRequest payload", required = true)
            @RequestParam MultipartFile template, @RequestParam String templateDataJson) throws IOException {

}

Следующий curl работает с Json, встроенным в команду curl:

curl --form 'template=@/Users/joe.deen/ms-template-binder/src/main/resources/html-template/Template.html' --form 'templateDataJson={"cost":"2.00","name":"James Milner 2"}' http://localhost:8081//pdf/download | base64 -D > test.pdf

НоЯ хотел бы читать из json, а не вставлять данные напрямую, например

 curl --form 'template=@/Users/joe.deen/ms-template-binder/src/main/resources/html-template/Template.html' --form 'templateDataJson=@/Users/joe.deen/ms-template-binder/src/main/resources/json/test.json' http://localhost:8081//pdf/download | base64 -D > test.pdf

Вторая команда curl не работает .Это бросает нулевой указатель в сервис.

Пожалуйста, как я могу читать из файла json, который находится на моем компьютере Mac OS, и передавать в качестве второго параметра моей конечной точке, а не вставлять содержимое jsonчто делает команду curl грязной.Данные отправляются через клиент Resttemplate.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 26 июня 2019

Добавьте ;type=application/json в конце пути к файлу json, как показано ниже:

curl --form 'template=@/Users/joe.deen/ms-template-binder/src/main/resources/html-template/Template.html' --form 'templateDataJson=@/Users/joe.deen/ms-template-binder/src/main/resources/json/test.json;type=application/json' http://localhost:8081//pdf/download | base64 -D > test.pdf
...