Быстрый старт
Взаимодействие с Компонентом осуществляется по REST API. REST API сформировано по спецификации OpenAPI.
URL для обращения:
- Адрес сервиса - http://platform-gateway/ufs-provider
- Swagger - http://<адрес виртуальной машины>:8083/ufs-provider/swagger-ui.html
Узнать адрес виртуальной машины можно в паспорте стенда вашего проекта. Дополнительную информацию можно получить у аккаунт-менеджера.
Обращение из произвольного языка программирования
- Выполните генерацию кода контрактов с использование Swagger Codegen.
- Выполните REST-запрос с использованием стандартной библиотеки для выбранного языка. В качестве тела POST/PUT-запроса, а также в качестве Response моделей используйте контракты, полученные на шаге 1.
При использовании из Java (альтернативный вариант)
-
Проверьте наличие подключенного maven-репозитория в
.m2/settings.xml
.settings.xml type=xml<servers> <server> <id>cpr_maven</id> <username>ИМЯ УЧЕТНОЙ ЗАПИСИ В SBER CLOUD</username> <password>ПАРОЛЬ УЧЕТНОЙ ЗАПИСИ В SBER CLOUD</password> </server> </servers> <profiles> <profile> <id>default</id> <repositories> <repository> <id>cpr_maven</id> <url>https://Путь_до_зависимостей_в_нексусе</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <profile> <profiles>
-
Добавьте зависимость с контрактами в
pom.xml
.pom.xml type=xml<dependency> <groupId>ru.sbrf.ufs</groupId> <artifactId>ufs-provider-api</artifactId> <version>АКТУАЛЬНАЯ ВЕРСИЯ</version> </dependency>
-
Создайте универсальный Service Bean для взаимодействия с
ufs-provider
.UfsService.java type=javapackage com.sbt.demo.ufsrest; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @Service public class UfsService { @Value("${ufs.provider.url}") private String ufsProviderUrl; public <TResponse> TResponse get(String endpoint, Class<TResponse> responseClass) { RestTemplate restTemplate = new RestTemplate(); ResponseEntity<TResponse> result = restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.GET, null, responseClass); return result.getBody(); } public <TResponse, TRequest> TResponse post(String endpoint, TRequest request, Class<TResponse> responseClass) { HttpEntity httpEntity = new HttpEntity(request); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<TResponse> result = restTemplate.postForEntity(ufsProviderUrl + "/" + endpoint, httpEntity, responseClass); return result.getBody(); } public <TRequest> void post(String endpoint, TRequest request) { HttpEntity httpEntity = new HttpEntity(request); RestTemplate restTemplate = new RestTemplate(); restTemplate.postForEntity(ufsProviderUrl + "/" + endpoint, httpEntity, Void.class); } public <TRequest> void put(String endpoint, TRequest request) { HttpEntity httpEntity = new HttpEntity(request); RestTemplate restTemplate = new RestTemplate(); restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.PUT, httpEntity, Void.class); } public void delete(String endpoint) { RestTemplate restTemplate = new RestTemplate(); restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.DELETE, null, Void.class); } public <TResponse> TResponse get(String endpoint, HttpHeaders headers, Class<TResponse> responseClass) { HttpEntity httpEntity = new HttpEntity(headers); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<TResponse> result = restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.GET, httpEntity, responseClass); return result.getBody(); } public <TResponse, TRequest> TResponse post(String endpoint, TRequest request, HttpHeaders headers, Class<TResponse> responseClass) { HttpEntity httpEntity = new HttpEntity(request, headers); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<TResponse> result = restTemplate.postForEntity(ufsProviderUrl + "/" + endpoint, httpEntity, responseClass); return result.getBody(); } public <TRequest> void post(String endpoint, TRequest request, HttpHeaders headers) { HttpEntity httpEntity = new HttpEntity(request, headers); RestTemplate restTemplate = new RestTemplate(); restTemplate.postForEntity(ufsProviderUrl + "/" + endpoint, httpEntity, Void.class); } public <TRequest> void put(String endpoint, TRequest request, HttpHeaders headers) { HttpEntity httpEntity = new HttpEntity(request, headers); RestTemplate restTemplate = new RestTemplate(); restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.PUT, httpEntity, Void.class); } public void delete(String endpoint, HttpHeaders headers) { HttpEntity httpEntity = new HttpEntity(headers); RestTemplate restTemplate = new RestTemplate(); restTemplate.exchange(ufsProviderUrl + "/" + endpoint, HttpMethod.DELETE, httpEntity, Void.class); } }
-
Добавьте переменную ufs.provider.url в application.yml/application.properties.application.yml type=yml
ufs: provider: url: http://platform-gateway/ufs-provider
-
Для демоприложения сформируйте Controller для проверки работы с сервисом печати.PrintController.java type=java
package com.sbt.demo.ufsrest.controllers; import com.sbt.demo.ufsrest.UfsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ru.sbrf.ufs.provider.api.dto.printform.FileExtType; import ru.sbrf.ufs.provider.api.dto.printform.PrintFormRequest; import ru.sbrf.ufs.provider.api.dto.sds.GetSectionsRequest; import ru.sbrf.ufs.provider.api.dto.sds.ModifySectionsRequest; import ru.sbrf.ufs.provider.api.dto.sds.VersionedSectionData; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; @CrossOrigin(origins = "*") @RestController @RequestMapping("/print") public class PrintController { private static final String PRINT_PREFIX = "print"; private UfsService ufsService; @Autowired public PrintController(UfsService ufsService) { this.ufsService = ufsService; } @PostMapping public ResponseEntity<ByteArrayResource> print(@RequestBody(required = false) PrintFormRequest printFormRequest) { byte[] result = ufsService.post(PRINT_PREFIX, printFormRequest, byte[].class); String fileName = String.format("%s%s.%s", printFormRequest.getTemplateCode(), printFormRequest.getVersionCode(), printFormRequest.getFileExtType().name().toLowerCase()); HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileName); return ResponseEntity.ok() .headers(headers) .contentLength(result.length) .contentType(getContentType(printFormRequest.getFileExtType())) .body(new ByteArrayResource(result)); } private MediaType getContentType(FileExtType extType){ switch (extType){ case PDF: return MediaType.APPLICATION_PDF; case TXT: return MediaType.TEXT_PLAIN; case DOCX: return MediaType.APPLICATION_OCTET_STREAM; case HTML: return MediaType.TEXT_HTML; } return MediaType.TEXT_PLAIN; } }
В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Генерация печатной формы
Генерация печатных форм с заданным форматом и набором полей, загрузка готовых шаблонов