Axios получает запрос на неполучение данных

#javascript #java #spring-boot #amazon-s3 #axios

Вопрос:

Я пытаюсь загрузить содержимое своей корзины s3, и когда я попадаю в конечную точку API, данные отображаются в моей консоли Intellij, но в моей консоли почтальона и браузера я просто получаю пустой объект.

Есть ли определенная причина, по которой я должен получить это в запросе Axios?

Аксиос —

 downloadLocations() {
  axios.get("http://localhost:8080/api/v1/targetLocation/downloadSearchData")
      .then((res) => {
        console.log(res.data)

        // We will need to retrieve the data into a downloadable blob
        // const  content = new Blob([JSON.stringify(???)],{ type: 'text/plain;charset=utf-8' })
        // const fileName = `test.txt`
        // saveAs(content, fileName)
      }, (error) => {
        console.log(error);
      });
}
 

Обслуживание —

 public ByteArrayOutputStream downloadSearchData() throws IOException {
    BasicAWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
    AmazonS3 s3client = AmazonS3ClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
            .withRegion(awsRegion)
            .build();

    var s3Object = s3client.getObject("downloadable-cases", "7863784198_2021-08-16T13_30_06.690Z.json");
    var out = new ByteArrayOutputStream();
    try (var in = s3Object.getObjectContent()) {
        in.transferTo(out);
    }
    System.out.println(out);
    return out;
}
 

Контроллер —

 @GetMapping(value = "downloadSearchData")
public ByteArrayOutputStream downloadSearchData() throws IOException {
    return targetLocationService.downloadSearchData();
}
 

Ответ №1:

Хорошо, я нашел ответ. Я изменил возвращаемое значение службы и контроллера на String, и теперь оно отлично работает

 public String downloadSearchData() throws IOException {
    BasicAWSCredentials awsCredentials = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
    AmazonS3 s3client = AmazonS3ClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
            .withRegion(Regions.GovCloud)
            .build();

    var s3Object = s3client.getObject("downloadable-cases", "7863784198_2021-08-16T13_30_06.690Z.json");
    var out = new ByteArrayOutputStream();
    try (var in = s3Object.getObjectContent()) {
        in.transferTo(out);
    }
    return out.toString();
}