Вызовите другой api rest из собственного api rest в весеннем загрузочном приложении - PullRequest
1 голос
/ 05 апреля 2020

Я изучаю Spring Boot, мне удалось развернуть API на моем компьютере, который извлекает данные из Oracle и когда я вставляю ссылку http://localhost: 8080 / myapi / ver1 / table1data в браузер возвращает мне данные. Ниже код моего контроллера:

@CrossOrigin(origins = "http://localhost:8080")
@RestController
@RequestMapping("/myapi/ver1")
public class Table1Controller {


    @Autowired
    private ITable1Repository table1Repository;

    @GetMapping("/table1data")
    public List<Table1Entity> getAllTable1Data() {
        return table1Repository.findAll();
    }

Теперь этот сценарий работает нормально. Я хочу сделать другое. Существует API https://services.odata.org/V3/Northwind/Northwind.svc/Customers, который возвращает данные некоторых клиентов. Предоставляет ли Spring Boot какой-либо способ, чтобы я мог переназначить / повторно развернуть этот API-интерфейс с моего собственного контроллера, чтобы вместо нажатия на вышеуказанную ссылку в браузере я набрал http://localhost: 8080 / myapi / ver1 / table1data и он вернет мне те же данные о клиентах.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2020

Да, весенняя загрузка предоставляет способ получить доступ к внешнему URL из вашего приложения через RestTemplate. Ниже приведен пример реализации получения ответа в виде строки, или вы также можете использовать структуру данных нужного выбора в зависимости от ответа:

@RestController
@RequestMapping("/myapi/ver1")
public class Table1Controller {

   @Autowired
   private RestTemplate restTemplate;

   @GetMapping("/table1data")
   public String getFromUrl() throws JsonProcessingException {
        return restTemplate.getForObject("https://services.odata.org/V3/Northwind/Northwind.svc/Customers",
            String.class);
   }
}

. Вы можете создать класс конфигурации для определения Бина для контроллера остальных. , Ниже приведен фрагмент,

@Configuration
public class ApplicationConfig{

   @Bean
   public RestTemplate restTemplate() {
       return new RestTemplate();
   }

}
1 голос
/ 05 апреля 2020

Вы можете использовать RestTemplate для стороннего вызова API и вернуть ответ от вашего API

final String uri = "https://services.odata.org/V3/Northwind/Northwind.svc/Customers";

RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);

На этом сайте есть несколько хороших примеров использования Spring RestTemplate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...