Содержание
Как открыть файл API? Расширение файла .API
Acrobat Plug-in
-
Developer
Adobe Systems -
Category
Файлы расширений -
Популярность
4 (3 votes)
Что такое файл API?
API — это расширение файла, обычно связанное с файлами Acrobat Plug-in. Adobe Systems определил стандарт формата Acrobat Plug-in. Файлы с расширением API могут использоваться программами, распространяемыми для платформы Mac OS, Windows. API файл относится к категории Файлы расширений так же, как #NUMEXTENSIONS # других расширений файлов, перечисленных в нашей базе данных. Самая популярная программа для обработки API файлов — Adobe Acrobat, но пользователи могут выбирать из 3 различных программ, которые поддерживают этот формат файлов. Программное обеспечение с именем Adobe Acrobat было создано Adobe Systems Incorporated. Чтобы найти более подробную информацию о программном обеспечении и API файлах, посетите официальный сайт разработчика.
Программы, которые поддерживают API расширение файла
В следующем списке перечислены программы, совместимые с файлами API, которые разделены на категории 2 в зависимости от операционной системы, в которой они доступны. Файлы с суффиксом API могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Программы, обслуживающие файл API
Windows
-
Adobe Acrobat -
Adobe Reader
MAC OS
-
Adobe Acrobat -
Adobe Reader
Как открыть файл API?
Отсутствие возможности открывать файлы с расширением API может иметь различное происхождение. Что важно, все распространенные проблемы, связанные с файлами с расширением API, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Приведенный ниже список проведет вас через процесс решения возникшей проблемы.
Шаг 1. Скачайте и установите Adobe Acrobat
Основная и наиболее частая причина, препятствующая открытию пользователями файлов API, заключается в том, что в системе пользователя не установлена программа, которая может обрабатывать файлы API. Эта проблема может быть решена путем загрузки и установки # РЕКОМЕНДОВАННОЙ # или другой совместимой программы, такой как Adobe Reader. Выше вы найдете полный список программ, которые поддерживают API файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Самый безопасный способ загрузки Adobe Acrobat установлен — для этого зайдите на сайт разработчика (Adobe Systems Incorporated) и загрузите программное обеспечение, используя предоставленные ссылки.
Шаг 2. Убедитесь, что у вас установлена последняя версия Adobe Acrobat
Если проблемы с открытием файлов API по-прежнему возникают даже после установки Adobe Acrobat, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия Adobe Acrobat. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Причиной того, что Adobe Acrobat не может обрабатывать файлы с API, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Adobe Acrobat.
Шаг 3. Настройте приложение по умолчанию для открытия API файлов на Adobe Acrobat
Если проблема не была решена на предыдущем шаге, вам следует связать API файлы с последней версией Adobe Acrobat, установленной на вашем устройстве. Процесс связывания форматов файлов с приложением по умолчанию может отличаться в деталях в зависимости от платформы, но основная процедура очень похожа.
Процедура изменения программы по умолчанию в Windows
- Выберите пункт Открыть с помощью в меню «Файл», к которому можно щелкнуть правой кнопкой мыши файл API.
- Выберите Выбрать другое приложение → Еще приложения
- Чтобы завершить процесс, выберите Найти другое приложение на этом… и с помощью проводника выберите папку Adobe Acrobat. Подтвердите, Всегда использовать это приложение для открытия API файлы и нажав кнопку OK .
Процедура изменения программы по умолчанию в Mac OS
- Щелкните правой кнопкой мыши на файле API и выберите Информация.
- Откройте раздел Открыть с помощью, щелкнув его название
- Выберите подходящее программное обеспечение и сохраните настройки, нажав Изменить все
- Если вы выполнили предыдущие шаги, должно появиться сообщение: Это изменение будет применено ко всем файлам с расширением API. Затем нажмите кнопку Вперед», чтобы завершить процесс.
Шаг 4. Убедитесь, что файл API заполнен и не содержит ошибок
Вы внимательно следили за шагами, перечисленными в пунктах 1-3, но проблема все еще присутствует? Вы должны проверить, является ли файл правильным API файлом. Отсутствие доступа к файлу может быть связано с различными проблемами.
1. Проверьте API файл на наличие вирусов или вредоносных программ.
Если случится так, что API инфицирован вирусом, это может быть причиной, которая мешает вам получить к нему доступ. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. API файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что файл с расширением API завершен и не содержит ошибок
Если вы получили проблемный файл API от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. Это может произойти, если процесс загрузки файла с расширением API был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Проверьте, есть ли у пользователя, вошедшего в систему, права администратора.
Некоторые файлы требуют повышенных прав доступа для их открытия. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Acrobat Plug-in.
4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия Adobe Acrobat
Если в системе недостаточно ресурсов для открытия файлов API, попробуйте закрыть все запущенные в данный момент приложения и повторите попытку.
5. Убедитесь, что ваша операционная система и драйверы обновлены
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Acrobat Plug-in. Устаревшие драйверы или программное обеспечение могли привести к невозможности использования периферийного устройства, необходимого для обработки файлов API.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла API мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле API.
Расширение API через абстрагирование / Хабр
NB. Это новая глава моей книги, посвященной разработке API. В тексте встречаются отсылки к предыдущим главам.
В предыдущих разделах мы старались приводить теоретические правила и иллюстрировать их на практических примерах. Однако понимание принципов проектирования API, устойчивого к изменениям, как ничто другое требует прежде всего практики. Знание о том, куда стоит «постелить соломку» — оно во многом «сын ошибок трудных». Нельзя предусмотреть всего — но можно выработать необходимый уровень технической интуиции.
Поэтому в этом разделе мы поступим следующим образом: возьмём наше модельное API из предыдущего раздела, и проверим его на устойчивость в каждой возможной точке — проведём некоторый «вариационный анализ» наших интерфейсов. Ещё более конкретно — к каждой сущности мы подойдём с вопросом «что, если?» — что, если нам потребуется предоставить партнерам возможность написать свою независимую реализацию этого фрагмента логики.
NB: в рассматриваемых нами примерах мы будем выстраивать интерфейсы так, чтобы связывание разных сущностей происходило динамически в реальном времени; на практике такие интеграции будут делаться на стороне сервера путём написания ad hoc кода и формирования конкретных договорённостей с конкретным клиентом, однако мы для целей обучения специально будем идти более сложным и абстрактным путём. Динамическое связывание в реальном времени применимо скорее к сложным программным конструктам типа API операционных систем или встраиваемых библиотек; приводить обучающие примеры на основе систем подобной сложности было бы, однако, чересчур затруднительно.
Начнём с базового интерфейса. Предположим, что мы пока что вообще не раскрывали никакой функциональности помимо поиска предложений и заказа, т.е. мы предоставляем API из двух методов — POST /offers/search
и POST /orders
.
Сделаем следующий логический шаг и предположим, что партнёры захотят динамически подключать к нашей платформе свои собственные кофе машины с каким-то новым API. Для этого нам будет необходимо договориться о формате обратного вызова, каким образом мы будем вызывать API партнёра, и предоставить два новых эндпойта для:
Например, можно предоставить вот такие методы.
// 1. Зарегистрировать новый тип API PUT /v1/api-types/{api_type} { "order_execution_endpoint": { // Описание функции обратного вызова } }
// 2. Предоставить список кофе-машин с разбивкой // по типу API PUT /v1/partners/{partnerId}/coffee-machines { "coffee_machines": [{ "id", "api_type", "location", "supported_recipes" }, …] }
Таким образом механика следующая:
партнер описывает свои виды API, кофе-машины и поддерживаемые рецепты;
при получении заказа, который необходимо выполнить на конкретной кофе машине, наш сервер обратится к функции обратного вызова, передав ей данные о заказе в оговоренном формате.
Теперь партнёры могут динамически подключать свои кофе-машины и обрабатывать заказы. Займёмся теперь, однако, вот каким упражнением:
перечислим все неявные предположения, которые мы допустили;
перечислим все неявные механизмы связывания, которые необходимы для функционирования платформы.
Может показаться, что в нашем API нет ни того, ни другого, ведь оно очень просто и по сути просто сводится к вызову какого-то HTTP-метода — но это неправда.
Предполагается, что каждая кофе-машина поддерживает все возможные опции заказа (например, допустимый объём напитка).
Нет необходимости показывать пользователю какую-то дополнительную информацию о том, что заказ готовится на новых типах кофе-машин.
Цена напитка не зависит ни от партнёра, ни от типа кофе-машины.
Эти пункты мы выписали с одной целью: нам нужно понять, каким конкретно образом мы будем переводить неявные договорённости в явные, если нам это потребуется. Например, если разные кофе-машины предоставляют разный объём функциональности — допустим, в каких-то кофейнях объём кофе фиксирован — что должно измениться в нашем API?
Универсальный паттерн внесения подобных изменений таков: мы должны рассмотреть существующий интерфейс как частный случай некоторого более общего, в котором значения некоторых параметров приняты известными по умолчанию, а потому опущены. Таким образом, внесение изменений всегда происходит в три шага.
Явная фиксация программного контракта в том объёме, в котором она действует на текущий момент.
Расширение функциональности: добавление нового метода, которые позволяют обойти ограничение, зафиксированное в п. 1.
Объявление существующих вызовов (из п. 1) «хелперами» к новому формату (из п. 2), в которых значение новых опций считается равным значению по умолчанию.
На нашем примере с изменением списка доступных опций заказа мы должны поступить следующим образом.
Документируем текущее состояние. Все кофе-машины, подключаемые по API, обязаны поддерживать три опции: посыпку корицей, изменение объёма и бесконтактную выдачу.
Добавляем новый метод
with-options
:PUT /v1/partners/{partnerId}/coffee-machines-with-options { "coffee_machines": [{ "id", "api_type", "location", "supported_recipes", "supported_options": [ {"type": "volume_change"} ] }, …] }
Объявляем, что вызов
PUT /coffee-machines
, как он представлен сейчас в протоколе, эквивалентен вызовуPUT /coffee-machines-with-options
, если в последний передать три опции — посыпку корицей, изменение объёма и бесконтактную выдачу, — и, таким образом, является частным случаем — хелпером к более общему вызову.
Часто вместо добавления нового метода можно добавить просто необязательный параметр к существующему интерфейсу — в нашем случае, можно добавить необязательный параметр options
к вызову PUT /cofee-machines
.
NB. Когда мы говорим о фиксации договоренностей, действующих в настоящий момент — речь идёт о внутренних договорённостях. Мы должны были потребовать от партнеров поддерживать указанный список опций, когда обговаривали формат взаимодействия. Если же мы этого не сделали изначально, а потом решили зафиксировать договорённости в ходе расширения функциональности внешнего API — это очень серьёзная заявка на нарушение обратной совместимости, и так делать ни в коем случае не надо, см. главу 14.
Границы применимости
Хотя это упражнение выглядит весьма простым и универсальным, его использование возможно только при наличии хорошо продуманной архитектуры сущностей и, что ещё более важного, понятного вектора дальнейшего развития API. Представим, что через какое-то время к поддерживаемым опциям добавились новые — ну, скажем, добавление сиропа и второго шота эспрессо. Список опций расширить мы можем — а вот изменить соглашение по умолчанию уже нет. Через некоторое время это приведёт к тому, что «дефолтный» интерфейс PUT /coffee-machines
окажется никому не нужен, поскольку «дефолтный» список из трёх опций окажется не только редко востребованным, но и просто абсурдным — почему эти три, чем они лучше всех остальных? По сути значения по умолчанию и номенклатура старых методов начнут отражать исторические этапы развития нашего API, а это совершенно не то, чего мы хотели бы от номенклатуры хелперов и значений по умолчанию.
Увы, здесь мы сталкиваемся с плохо разрешимым противоречием: мы хотим, с одной стороны, чтобы разработчик писал лаконичный код, следовательно, должны предоставлять хорошие хелперные методы и значения по умолчанию. С другой, знать наперёд какими будут самые частотные наборы опций через несколько лет развития API — очень сложно.
NB. Замаскировать эту проблему можно так: в какой-то момент собрать все эти «странности» в одном месте и переопределить все значения по умолчанию скопом под одним параметром. Условно говоря, вызов одного метода, например, POST /use-defaults {"version": "v2"}
переопределяет все значения по умолчанию на более разумные. Это упростит порог входа и уменьшит количество вопросов, но документация от этого станет выглядеть только хуже.
В реальной жизни как-то нивелировать проблему помогает лишь слабая связность объектов, речь о которой пойдёт в следующей главе.
Это черновик новой главы будущего раздела «Обратная совместимость» моей книги о разработке API. Работа ведётся на Github.
Справочник по API
— Chrome Developers
Chrome предоставляет расширения со многими API специального назначения, такими как chrome.alarms
и chrome.action
. Многие API состоят из пространства имен и связанных с ним полей манифеста. Эти поля часто являются разрешениями, но не всегда. Например, для chrome.alarms
требуется только разрешение alarms
, а для chrome.action
требуется объект действия в файле manifest.json
.
# Соглашения API
Если не указано иное, методы в chrome.*
API являются асинхронными : они возвращаются немедленно, не дожидаясь завершения операции. Если вам нужно узнать результат вызова таких методов, используйте возвращаемый промис или передайте в метод функцию обратного вызова. Дополнительные сведения см. в разделе Асинхронные методы.
Стабильные API
Информация о выпуске недоступна для API до Chrome 42, который был выпущен в начале 2015 г.
Имя | Описание |
---|---|
accessibilityFeatures | Используйте API |
action | Используйте API |
alarms | Используйте API |
аудио | API |
закладки | Используйте API |
browserAction | Используйте действия браузера для размещения значков на главной панели инструментов Google Chrome справа от адресной строки. Помимо значка, действие браузера может иметь всплывающую подсказку, значок и всплывающее окно. |
browsingData | Используйте API |
certificateProvider | Используйте этот API для предоставления сертификатов платформе, которая может использовать эти сертификаты для проверки подлинности TLS. |
команды | Используйте API команд, чтобы добавить сочетания клавиш, которые запускают действия в вашем расширении, например, действие для открытия браузера или отправки команды в расширение. |
contentSettings | Используйте API |
contextMenus | Используйте API |
файлы cookie | Используйте API |
отладчик | |
declarativeContent | Используйте API |
declarativeNetRequest | API |
desktopCapture | Desktop Capture API, который можно использовать для захвата содержимого экрана, отдельных окон или вкладок. |
devtools.inspectedWindow | Использовать API |
devtools.network | Используйте API |
devtools.panels | Используйте API |
devtools.recorder | Используйте API |
documentScan | Использовать |
DOM | Используйте API |
Загрузки | Используйте |
enterprise.deviceAttributes | Используйте |
enterprise.hardwarePlatform | Используйте API |
enterprise.networkingAttributes | Используйте API |
enterprise.platformKeys | Используйте API |
events | Пространство имен |
extension | API |
extensionTypes | API |
fileBrowserHandler | Используйте API |
fileSystemProvider | Использовать |
fontSettings | Используйте API |
gcm | Используйте |
история | Использовать |
i18n | Используйте инфраструктуру |
identity | Используйте API |
простоя | Используйте API |
input. ime | Используйте API |
instanceID | Используйте |
loginState | Используйте API |
управление | API |
уведомления | Использовать |
вне экрана | Используйте |
омнибокс | API омнибокса позволяет зарегистрировать ключевое слово в адресной строке Google Chrome, также известной как омнибокс. |
pageAction | Используйте |
pageCapture | Используйте API |
разрешения | Использовать |
platformKeys | Используйте API |
питание | Используйте API |
printerProvider | API-интерфейс |
печать | Используйте |
printMetrics | Используйте API |
конфиденциальность | Используйте API |
proxy | Используйте API |
среда выполнения | Используйте API |
сценарии | Используйте API |
search | Используйте API |
сеансы | Используйте API |
хранение | Используйте API |
system.cpu | Используйте API |
system.display | Используйте API |
system.memory | API |
system. storage | Используйте API |
tabCapture | Используйте API |
tabGroups | Используйте API |
tabs | Используйте API |
topSites | Используйте API |
tts | Используйте API |
ttsEngine | Используйте API |
типы | API |
vpnProvider | Используйте API |
обои | Используйте API |
webNavigation | Использовать |
webRequest | Используйте API |
windows | Используйте API |
Beta API
Эти API доступны только в каналах Chrome Beta и DEV:
Имя | Описание |
---|---|
DESTARAINGAINATION | |
DISTARAINATION | |
DISTARAINATION | |
DISTARAINATION | |
. . Вместо этого воспользуйтесь API {@link declarativeNetRequest}. Используйте API chrome.declarativeWebRequest для перехвата, блокировки или изменения запросов в процессе выполнения. Это значительно быстрее, чем {@link webRequest 9.0003 chrome.webRequest API}, потому что вы можете регистрировать правила, которые оцениваются в браузере, а не в движке JavaScript, что снижает задержки при передаче и обеспечивает более высокую эффективность. |
Dev APIs
These APIs are only available in the Chrome Dev channel:
Name | Description |
---|---|
automation | The |
процессы | Используйте API |
API приложений платформы
Эти API поддерживают приложения Chrome на всех платформах.
Эти API устарели. Chrome прекратит поддержку приложений Chrome на всех платформах. Узнайте больше о миграции вашего приложения.
Имя | Описание |
---|---|
app.runtime | Используйте API |
app.window | Используйте API |
appviewTag | Используйте тег |
bluetooth | Используйте API |
bluetoothLowEnergy | API |
bluetoothSocket | Используйте API |
browser | Используйте API |
буфер обмена | API |
fileSystem | Используйте API |
hid | Используйте API |
mdns | Используйте API |
mediaGalleries | Используйте API |
networking.onc | API |
серийный номер | Используйте API |
socket | Используйте API |
sockets.tcp | Используйте API |
sockets.tcpServer | Используйте API |
sockets.udp | Используйте API |
syncFileSystem | Используйте API |
system.network | Используйте API |
usb | Используйте API |
виртуальная клавиатура | API |
webviewTag | Используйте тег |
chrome.extension — Chrome Developers
Описание
API
chrome.extension
содержит утилиты, которые могут использоваться любой страницей расширения. Он включает поддержку обмена сообщениями между расширением и сценариями его содержимого или между расширениями, как подробно описано в разделе Передача сообщений.
Содержание
- Типы
- ViewType
- Свойства
- inIncognitoContext
- lastError
- Methods
- getBackgroundPage
- getExtensionTabs
- getURL
- getViews
- isAllowedFileSchemeAccess
- isAllowedIncognitoAccess
- sendRequest
- setUpdateUrlData
- Events
- onRequest
- onRequestExternal
Сводка
Типы
ViewType
Properties
inIncognitoContext
lastError
Methods
getBackgroundPage
getExtensionTabs
getURL
getViews
isAllowedFileSchemeAccess
isAllowedIncognitoAccess
sendRequest
setUpdateUrlData
Events
onRequest
onRequestExternal
Типы
ViewType
Chrome 44+
Тип расширения представления.
Тип
"tab"
или
"popup"
Свойства
inIncognitoContext
Истинно для сценариев содержимого, выполняемых внутри вкладок в режиме инкогнито, и для страниц расширения, выполняемых внутри процесса инкогнито. Последнее относится только к расширениям с раздельным incognito_behavior.
Тип
логический
lastError
≤MV2 Устарело, начиная с Chrome 58
Пожалуйста, используйте runtime.lastError
.
Устанавливается на время жизни обратного вызова, если асинхронное расширение API привело к ошибке. Если ошибки не произошло, lastError будет undefined
.
Тип
объект
Свойства
Методы
getBackgroundPage
chrome.extension.getBackgroundPage()
Только передний план
Возвращает объект JavaScript 'window' для фоновой страницы, работающей внутри текущего расширения. Возвращает null, если у расширения нет фоновой страницы.
Возвращает
Окно | не определено
getExtensionTabs
chrome.extension.getExtensionTabs(
windowId?:
номер,
)
≤MV2 Только передний план Устарело
Пожалуйста, используйте extension.getViews
{type: "tab"}
.
Возвращает массив оконных объектов JavaScript для каждой из вкладок, запущенных внутри текущего расширения. Если указан windowId
, возвращает только «оконные» объекты вкладок, прикрепленных к указанному окну.
Параметры
windowId
необязательный номер
Возвращает
getURL
chrome.extension.getURL(
путь:
строка,
)
≤MV2 Устарело, начиная с Chrome 58
Пожалуйста, используйте runtime. getURL
.
Преобразует относительный путь в каталоге установки расширения в полный URL-адрес.
Параметры
Возвращает
getViews
chrome.extension.getViews(
fetchProperties?:
объект,
)
Только передний план
Возвращает массив объектов JavaScript 'window' для каждой из страниц, работающих внутри текущего расширения.
Параметры
Возвращает
isAllowedFileSchemeAccess
chrome.extension.isAllowedFileSchemeAccess(
обратный вызов?:
функция,
)
Promise
Извлекает состояние доступа расширения к схеме 'file://'. Это соответствует управляемому пользователем параметру «Разрешить доступ к URL-адресам файлов», доступному на странице chrome://extensions.
Параметры
Возвращает
isAllowedIncognitoAccess
chrome. extension.isAllowedIncognitoAccess(
обратный вызов?:
функция,
)
Promise
Извлекает состояние доступа расширения к режиму инкогнито. Это соответствует управляемой пользователем настройке «Разрешено в режиме инкогнито» для каждого расширения, доступной на странице chrome://extensions.
Параметры
Возвращает
sendRequest
chrome.extension.sendRequest(
идентификатор расширения?:
строка,
запрос:
любой,
обратный вызов?:
функция,
)
Обещание ≤MV2 Устарело
Пожалуйста, используйте runtime.sendMessage
.
Отправляет один запрос другим прослушивателям в пределах расширения. Аналогичен runtime.connect
, но отправляет только один запрос с необязательным ответом. Событие extension.onRequest
запускается на каждой странице расширения.
Параметры
extensionId
необязательная строка
Идентификатор расширения, к которому вы хотите подключиться. Если опущено, по умолчанию используется ваше собственное расширение.
запрос
любой
обратный вызов
функция необязательно
Chrome 99+
(отклик:
Любые)
=>пустота
ответ
любой
Объект ответа JSON, отправленный обработчиком запроса. Если при подключении к расширению возникает ошибка, обратный вызов будет вызван без аргументов, а
runtime.lastError
будет установлен в сообщение об ошибке.
Возвращает
setUpdateUrlData
chrome.extension.setUpdateUrlData(
данные:
строка,
)
Задает значение параметра ap CGI, используемого в URL-адресе обновления расширения. Это значение игнорируется для расширений, размещенных в галерее расширений Chrome.
Параметры
данные
строка
События
по запросу
chrome.extension.onRequest.addListener(
обратный вызов:
функция,
)
≤MV2 Устарело
Пожалуйста, используйте runtime.onMessage
.
Запускается при отправке запроса либо из процесса расширения, либо из сценария содержимого.
Параметры
callback
function
Параметр
callback
выглядит так:
(запрос:
любой, отправитель:
время выполнения.MessageSender, sendResponse:
функция)
=>пустота
onRequestExternal
chrome.extension.onRequestExternal.