Оформление
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/接口调用, возникла следующая ошибка:

Решение:
Чтобы получить разрешения для этой страницы, см. раздел Иерархические назначения разрешений.
7.2 Наш запрос на подключение был отклонен
Описание проблемы
FineBI, встроенный в другие страницы через iframe, сообщил об ошибке: xxx отклонил наш запрос на подключение, как показано ниже:

Рецепт
Администратор входит в платформу, нажимает на "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%7D7.4 Возвращение кода ошибки
При интеграции системы, если в фоновом режиме произошла ошибка, она вернет код ошибки (errorCode), конкретное определение кода исключения можно найти в разделе Описание кода ошибки системы









