RestApiDeveloperGuide: различия между версиями
| Строка 14: | Строка 14: | ||
Аутентификация происходит стандартным способом - посредством передачи JWT в заголовке Authorization (e.g. '-H "Authorization: Bearer ${jwt}")').  | Аутентификация происходит стандартным способом - посредством передачи JWT в заголовке Authorization (e.g. '-H "Authorization: Bearer ${jwt}")').  | ||
Авторизация - путем передачи данных (зачастую логина и пароля) в соответствующие методы и получения JWT (подробнее -   | Авторизация - путем передачи данных (зачастую логина и пароля) в соответствующие методы и получения JWT (подробнее - [[RestApiDeveloperGuide#.23_Auth_API|в отдельном блоке]]).  | ||
Базовый урл - <b>/restapi</b> (например, для localhost - localhost/restapi/)  | Базовый урл - <b>/restapi</b> (например, для localhost - localhost/restapi/)  | ||
Версия 14:46, 2 октября 2024
Руководство по работе с Rest API
Версия 4.6.0
© 2015-2025, ООО "Процессные технологии"
# Введение
RunaWFE REST API - restful API RunaWFE–сервера, предоставляющий доступ к большинству доступных операций внутри системы (работа с определениями БП, БП, задачами, пользователями, отношениями, логами и т.д.).
OpenApi спецификация находится тут,
исходный код - тут.
Аутентификация происходит стандартным способом - посредством передачи JWT в заголовке Authorization (e.g. '-H "Authorization: Bearer ${jwt}")').
Авторизация - путем передачи данных (зачастую логина и пароля) в соответствующие методы и получения JWT (подробнее - в отдельном блоке).
Базовый урл - /restapi (например, для localhost - localhost/restapi/)
# Краткая информация об основных API
Краткая информация об основных API
# Auth API
Базовый урл - /auth (например, для localhost - localhost/restapi/auth).
Отвечает за авторизацию пользователей и содержит 3 метода:
- /basic - авторизация по логину и паролю
 - /kerberos - авторизация по kerberos токену
 - /trusted - авторизация по trusted принципу
 
# Definition API
Базовый урл - /definition (например, для localhost - localhost/restapi/definition).
Отвечает за работу с определениями БП, основные методы:
- / - загрузка нового определения БП
 - /list - получение определений БП по заданному фильтру
 - /{id} - получение определения БП по id
 
# Примеры
# Java
В примерах ниже для удобства будут использоваться
- Jackson (для сериализации в JSON),
 - клиентская библиотека wfe-restapi (содержащая все необходимые dto),
 - а также Jetty (для выполнения HTTP запросов), пример зависимостей:
 
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>ru.runa.wfe</groupId>
            <artifactId>wfe-restapi</artifactId>
            <classifier>client</classifier>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>javax-websocket-client-impl</artifactId>
        </dependency>
        
# Авторизация по логину и паролю
        import com.fasterxml.jackson.databind.ObjectMapper;
        import org.eclipse.jetty.client.HttpClient;
        import ru.runa.wfe.rest.dto.WfeCredentials;
        ...
            try {
                HttpClient httpClient = new HttpClient();
                httpClient.start();
                WfeCredentials credentials = new WfeCredentials();
                credentials.setLogin("Administrator");
                credentials.setPassword("wf");
                String token = httpClient.POST("localhost/restapi/" + "auth/basic")
                        .header("Content-type", "application/json")
                        .content(new StringContentProvider(new ObjectMapper().writeValueAsString(credentials)))
                        .send().getContentAsString();
                httpClient.stop();
            } catch (Exception e) {
                // exception handling
            }
            
# Загрузка нового определения БП
        import org.eclipse.jetty.client.HttpClient;
        ...
            try {
                HttpClient httpClient = new HttpClient();
                httpClient.start();
                String token = getToken(httpClient);
                byte[] file = Files.readAllBytes(Paths.get(System.getProperty("user.dir") + "bp.par"));
                httpClient.newRequest("localhost/restapi/" + "definition/")
                        .method(HttpMethod.PUT)
                        .header("Content-type", "multipart/form-data")
                        .header("Authorization", "Bearer " + token)
                        .param("categories", "")
                        .content(new BytesContentProvider(file))
                        .send().getContentAsString();
                httpClient.stop();
            } catch (Exception e) {
                // exception handling
            }
            
# Curl
# Авторизация по логину и паролю
            curl -X POST "http://localhost/restapi/auth/basic" \
                 -H "Content-Type: application/json" \
                 -d '{"login":"Administrator", "password":"wf"}'
            
# Загрузка нового определения БП
            curl -X PUT "http://localhost/restapi/definition/" \
                 -H "Content-Type: multipart/form-data" \
                 -H "Authorization: Bearer ${jwt}" \
                 -F "categories=" \
                 --data-binary "@$(pwd)/bp.par"