Feign отправить PDF из MultipartFile через POST - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь отправить pdf через POST на конечную точку REST через feign, которую я ранее получил как MultipartFile из моего собственного весеннего REST API, но мой клиент Feign всегда терпит неудачу с сообщением:

Тело запроса должно содержать либо сам файл pdf (application / pdf), либо путь к файлу (application / json с ключом 'path')

Моя конечная точка REST:

@Autowired
PDFConverterService pdfConverterService;

public void importResource(MultipartFile resource) throws IOException {
    String contentType = resource.getContentType();
    if (contentType.equals("application/pdf")) {
        File tmp = File.createTempFile("tmp","pdf");
        resource.transferTo(tmp);
        pdfConverterService.process(tmp);
        tmp.delete();
    }
}

Мой симулированный клиент:

@FeignClient(name = "PDFConverterService", url = "http://foo/bar/api")
@Service
public interface PDFConverterService {
    @RequestMapping(method = RequestMethod.POST, value = "/process")
    @Headers({"Accept: application/json", "Content-Type: application/pdf"})
    String process(@RequestBody File file);
}

Я также пытался использовать process(@Param("file") File file), что также не удалось с той же ошибкой. Мне еще предстоит найти какую-либо полезную документацию для симулированного POST-запроса с телом pdf-запроса.

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

curl -X POST -H "Accept: application/json" -H "Content-Type: application/pdf" -i http://foo/bar/api/process --data-binary "@\path\to\some\pdf"
...