Быстрый старт

Взаимодействие с Компонентом осуществляется по REST API. REST API сформировано по спецификации OpenAPI.
URL для обращения:
Узнать адрес виртуальной машины можно в паспорте стенда вашего проекта. Дополнительную информацию можно получить у аккаунт-менеджера.

Обращение из произвольного языка программирования

  1. Выполните генерацию кода контрактов с использование Swagger Codegen.
  2. Выполните REST-запрос с использованием стандартной библиотеки для выбранного языка. В качестве тела POST/PUT-запроса, а также в качестве Response моделей используйте контракты, полученные на шаге 1.

При использовании из Java (альтернативный вариант)

  1. Проверьте наличие подключенного 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>
    
  2. Добавьте зависимость с контрактами в pom.xml.
    pom.xml type=xml
    <dependency>
        <groupId>ru.sbrf.ufs</groupId>
        <artifactId>ufs-provider-api</artifactId>
        <version>АКТУАЛЬНАЯ ВЕРСИЯ</version>
    </dependency>
    
  3. Создайте универсальный Service Bean для взаимодействия с ufs-provider.
    UfsService.java type=java
    package 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);
        }
    }
    
  4. Добавьте переменную ufs.provider.url в application.yml/application.properties.
    application.yml type=yml
    ufs:
      provider:
        url: http://platform-gateway/ufs-provider
    
  5. Для демоприложения сформируйте 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;
        }
    }
    

Демопримеры

В демопримерах реализованы стандартные сценарии, демонстрирующие работу отдельных сервисов Платформы ГосТех. Отправка тестовых запросов в демопримерах позволит вам ознакомиться с функциями того или иного сервиса. Доступные демопримеры и описания реализованной в них функциональности представлены ниже.
Генерация печатной формы
Генерация печатных форм с заданным форматом и набором полей, загрузка готовых шаблонов
Предыдущий раздел
1.12 Platform V Print
Следующий раздел
Создание шаблонов
Была ли страница полезной?