Skip to content

FAQ по интеграции веб-страниц - FineReport Справка | Разработка отчетов | Отчеты | Учебные пособия

FAQ по интеграции веб-страниц

1. Обзор

1.1 Версия

Версия сервера FineBIФункциональные изменения
6.0-

1.2 Функциональный профиль

FineBI поддерживает вызов данных интерфейса через GET и POST для веб-интеграции.

Эта статья познакомит вас с интерфейсом API, связанным с вводными знаниями, чтобы облегчить последующее использование FineBI для веб-интеграции.

2. Как читать документацию по интерфейсу

Документация по интерфейсу API обычно делится на описание интерфейса, адрес интерфейса, метод запроса, параметры запроса, содержание ответа, код ошибки, примеры нескольких частей:

элементинструкции
Профиль интерфейсаКратко опишите логику и роль интерфейса. Например, укажите, что это интерфейс для отправки сообщений, для проверки погоды
URL-адрес интерфейсаЭтот адрес url представляет собой сетевой адрес, нам нужно вызвать интерфейс url, получить содержимое ответа
Метод запросаРаспространенными методами запроса являются GET и POST, другие методы показаны ниже.Примечание: FineBI поддерживает запросы GET и POST.
параметр запросаПеременная, используемая для передачи информации.Т.е. названия запрашиваемых полей и правила: что это за поля, каковы их типы, обязательны ли они для заполнения и т.д.* Передача URL-адресов * Заголовки Заголовки запросов * Содержание тела запроса
Содержание ответаИмена полей и правила, возвращаемые интерфейсом
код ошибкиКлассифицируйте ошибки интерфейса в коде, чтобы быстро найти причину ошибки и решить проблему.
реальный примерСодержимое ответа при вызове

3. параметры запроса

3.1 GET-запросы

GET обычно используется для получения данных на стороне сервера:

  • Метод GET добавляет параметры после url и может передавать их только в виде текста;
  • Объем передаваемых данных невелик, около 4 Кб (в разных браузерах по-разному);
  • При низком уровне безопасности информация будет отображаться в адресной строке;
  • Быстрый и обычно используется для запросов, не требующих высокой безопасности;
  • GET-запросы также могут иметь параметр Headers

В GET-запросах могут передаваться параметры, обычно в виде URL-адресов.

В GET-запросе параметры встречи / Params / Querys передаются в виде URL-адресов.

В POSTMAN вы можете напрямую использовать URL для передачи формы параметров, либо заполнить KEY и VALUE в Params, которые будут автоматически сращиваться (демонстрация).

3.2 POST-запросы

  • Post отправляет данные с более высоким уровнем безопасности, чем get.
  • Объем передаваемых данных велик, а запрос не предъявляет требований к длине данных;
  • Используется для случаев с высокими требованиями к безопасности, например паролей, и случаев с большим объемом передаваемых данных, таких как загрузка файлов и публикация статей.

POST-запрос обычно состоит из Url, Headers, Body, если в интерфейсном документе POST-запроса встречаются Params / Querys необходимо использовать как GET-запрос, например, параметры URL для передачи параметров, а интерфейсный документ POST-запроса внутри параметров обычно ссылается на Body.

Пример:

типологияинструкции
application/json, формат данных JSON, обычно используется raw-JSONНаиболее распространенные форматы, такие как{ "имя": "Рокси", "пароль": "123"}.На этом этапе заголовок запроса имеет следующий вид:
text/plain, формат обычного текста, обычно используется raw-TextПример: имя:ziv, пароль:123
text/xml (понятно), формат данных XML, обычно используется raw-XML.Пример: <?xml version="1.0" encoding="UTF-8" ? > <имя>ziv</имя <пароль>123</пароль
multipart/form-dataОн будет обрабатывать данные формы как одно сообщение, в виде вкладок, разделенных разделителями. Из-за разделения границ multipart/form-data может загружать как файлы, так и пары ключ-значение. Он использует пары ключ-значение, поэтому может загружать несколько файлов
application/x-www-from-urlencodedпреобразует данные в форме в пары ключ-значение, разделенные &.

4. формы назначение прав доступа

Все интерфейсы WEB API FineBI, за исключением интерфейса входа в систему, требуют входа в систему.

1) Формальное использование: Рекомендуется настроить единый вход, иначе вам придется неоднократно входить в систему после встроенной интеграции. Подробности см. в разделе: Единая регистрация

2) Тестовая фаза: сначала войдите в FineBI, затем получите параметр токена, и при отладке других интерфейсов используйте параметр токена.

В этой главе описаны два способа получения и использования параметра token.

4.1 fine_auth_token

1) Пользователь входит в систему FineBI.

2) F12, в разделе "Network>Headers", получите значение fine_auth_token. Как показано на рисунке ниже:

3) Поместите его в queryString запроса и вставьте в url в качестве параметра ?fine_auth_token=token,

4.2 Авторизация

1) Пользователь входит в систему FineBI.

2) F12, в разделе "Network>Headers", получите значение токена в Authorisation. Как показано на рисунке ниже:

3) Поместите его в заголовок запроса в виде key="Authorisation", value="Bearer " + token.

Обратите внимание на пробел после слова Bearer; рекомендуется скопировать выделенную желтым цветом область.

5. Получение различных идентификаторов

Некоторые интерфейсы имеют значения параметров, которые необходимо получать через другие интерфейсы. Но при отладке иногда требуется протестировать интерфейс по отдельности, как получить эти значения ID в это время?

IDПолучить пример
идентификатор пользователяНажмите на "Мои анализы", ID после ссылки - это ID текущего пользователя.
Вот My Analysis Идентификатор папкиНажмите на папку, ID после ссылки - это ID текущего пользователя.
Под моим анализом Идентификатор субъектаНажмите на тему, ID после темы в ссылке - это ID темы.
Вот My Analysis.Идентификатор листа данныхЩелкните на таблице данных, идентификатор после таблицы в ссылке - это идентификатор таблицы данных
My Analysis Идентификатор компонентаНажмите на компонент, ID после виджета в ссылке - это ID компонента.
Вот My Analysis Идентификатор приборной панелиНажмите на приборную панель, ID после отчета в ссылке - это ID приборной панели.
Под Public Data папкиНажмите на папку, ID после ссылки - это ID текущего пользователя.
Под Public Data имя таблицыНажмите на набор данных, название после таблицы в ссылке - это оригинальное название набора данных.

6. другие интерфейсы

6.1 Междоменный интерфейс входа в систему

Роль: Используйте этот интерфейс для входа в систему BI.

URL: /login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

Метод запроса: GET

6.2 Настройка перед экспортом

Роль: При экспорте excel из BI's экспорта компонентов или глобального экспорта, перед операцией экспорта, добавить некоторые пользовательские операции, вы можете использовать этот интерфейс для достижения. Например, пользовательское шифрование экспортируемого файла;

Интерфейс: ExportHandleProvider

  
   
  
   
  
   
package com.finebi.stable.fun; import com.fr.stable.fun.mark.Mutable; import java.io.OutputStream; /.  
  
  
** * Created by Hiram on 2018/11/14. */ public interface ExportHandleProvider  
  
   
 extends Mutable { String XML_TAG = "ExportHandleProvider"; &  
   
  
  
 nbsp; int CURRENT_LEVEL = 1; /** *  
 * @param originalOutputStream оригинальный поток экспорта * @param type&  
  
  
 nbsp; тип экспорта * @return handleStream */  
 OutputStream handleStream(OutputStream originalOutputStream, ExportType type); }

Пример исходного кода:

Следующий пример исходного кода просто подсчитывает размер экспортируемого файла и выводит его в журнал. Напишите CountExportHandle, который перехватывает обработку, возвращает CountOutputStream, подсчитывает число при записи и, наконец, выводит размер при закрытии.

CountExportHandle:

  
  
import com.finebi.stable.fun.ExportType; import com.finebi.stable.fun.impl.AbstractExportHandleProvider; import java.  
  
 io.OutputStream; public class CountExportHandle extends AbstractExportHandleProvider { &  
 nbsp;@Override public OutputStream handleStream(OutputStream originalOutputStream,  
 ExportType type) { return new CountOutputStream(  
  
   
 originalOutputStream); } }

CountOutputStream:

  
  
  
   
   
import com.fr.log.FineLoggerFactory; import java.io.IOException; import java.io.OutputStream; public  
   
 class CountOutputStream extends OutputStream { private OutputStream out  
   
  
   
; private int count; public CountOutputStream(  
  
  
 OutputStream out) { this.out = out; } &   
  
 nbsp; @Override public void write(int b) throws IOException  
  
  
 { count++; out.write(b);  
   
  
 } @Override public void write(byte[] b)  
  
 throws IOException { count += b.length;  
  
   
  
 out.write(b); } @Override  
 public void write(byte[] b, int off, int len) throws IOException { &  
 nbsp; count += len; out.write(b, off,&  
  
   
  
 nbsp;len); } @Override public void flush()&  
  
  
   
 nbsp;throws IOException { out.flush(); } &  
  
 nbsp; @Override public void close() throws IOException { & nbsp; FineLoggerFactory.getLogger().info("===== export length: {} &  
  
  
 nbsp;======", count); out.close(); } }

Примечание: Использование этого интерфейса требует вторичной разработки.

6.3 Получение полного дерева каталога

Роль: Получить платформу домашней страницы каталога панели

URL: /v10/view/entry/tree

Метод запроса: GET

Примечание: Этот интерфейс должен нести fine_auth_token для аутентификации.

6.4 Интерфейс интеграции страниц

Чтобы унифицировать портал, многие пользователи стремятся интегрировать внутренние страницы управления FineBI в свои собственные системы. В этой главе представлены интерфейсы для интеграции страниц, поддерживаемые FineBI.

1) Интерфейс

Набор административных меню, поддерживающих интеграцию отдельных страниц, представлен в таблице ниже:

Доступ к каждому методу вызова интерфейса осуществляется следующим образом: http: //ip:端口/工程名/decision/接口调用

Меню администраторавызов интерфейсапримечание
Управление каталогом/каталог-
управление пользователями/user-
управление правами/privilege-
планирование времени/таймерОтсутствие глобальных настроек

2) Примеры

Администраторы могут получить доступ к управлению каталогом, войдя в систему Data Decision System и перейдя по ссылке: http: //localhost:37799/webroot/decision/directory, как показано ниже:

7. Оговорки

7.1 Нет доступа к странице

Описание проблемы:

После того как пользователь вошел в систему Data Decision System в качестве неадминистратора и перешел по адресу: http: //IP:Port/webroot/decision/接口调用, возникла следующая ошибка:

1574315163723542.png

Решение:

Чтобы получить разрешения для этой страницы, см. раздел Иерархические назначения разрешений.

7.2 Наш запрос на подключение был отклонен

Описание проблемы

FineBI, встроенный в другие страницы через iframe, сообщил об ошибке: xxx отклонил наш запрос на подключение, как показано ниже:

03.png

Рецепт

Администратор входит в платформу, нажимает на "System Management > Управление безопасностью", закрывает и нажимает на кнопку " Защита от нападения заложников ". Как показано на рисунке ниже:

7.3 Сервер не поддерживает URL-адреса в формате JSON

Поскольку URL в FineBI передает объект JSON, если некоторые серверы не поддерживают JSON URL, вам нужно сначала закодировать значение URL типа JSON параметром encodeURIComponent().

Пример:

  
dir={"name": "New Dashboard 12", "catalog":[]} необходимо изменить на: encodeURIComponent(JSON.stringify({"name":& quot;New Dashboard 12", "catalog":[]}))

Код выглядит следующим образом:

dir=%7B%22name%22%3A%22%E6%96%B0%E5%BB%BA%E4%BB%AA%E8%A1%A8%E6%9D%BF12%22%2C%22catalog%22%3A%5B%5D%7D

7.4 Возвращение кода ошибки

При интеграции системы, если в фоновом режиме произошла ошибка, она вернет код ошибки (errorCode), конкретное определение кода исключения можно найти в разделе Описание кода ошибки системы