Получить IntelliJ для автозаполнения на основе CoreAPI Spec от localhost: 8080 / api / spec JSON - PullRequest
0 голосов
/ 21 ноября 2018

У нас есть бэкэнд, обслуживающий несколько API.Эти API также описаны с использованием CoreAPI, и это предоставляется клиентам в виде JSON.

Вместо того, чтобы копировать этот JSON в мой клиентский код, как я могу заставить IntelliJ выполнять автозаполнение на основе этой конечной точки?Например, у нас может быть EndpointManager, который обслуживает этот JSON в моем клиенте, и когда я запускаю EndpointManager.getAPI().user.list.url, я хочу, чтобы он автоматически заполнялся, когда я набираю user., чтобы предложить мне варианты, основанные на части JSON

* 1007.*

Я мог бы просто скопировать JSON в мой клиентский код, и я думаю, что IntelliJ поднимет его.Но мне нужен динамический способ, чтобы нам не приходилось пинговать назад и обратно, говоря: «Я изменил структуру внутреннего API-интерфейса, извлеките этот JSON и подтвердите снова, пожалуйста» и т. Д.

1 Ответ

0 голосов
/ 21 ноября 2018

при использовании EndpointManager.getAPI() для получения JSON фактические данные доступны только во время выполнения (т. Е. В среде IDE требуется выполнить оценку кода для разрешения свойств), поэтому при разрешении / завершении не удается выполнить статический анализ кода.

Вы можете сообщить IDE, как выглядят ваши данные во время выполнения.Возможное решение с использованием аннотаций JSDoc:

/**
 * @typedef {Object} data
 * @property {Object} user
 * @property {Object} user.list
 * @property {string} user.list.url
 * @property {string} user.list.action
 * @property {string} user.list._type
 */

/**
 *
 * @type {data}
 */
let myJson = EndpointManager.getAPI();
alert(myJson.user.list.url);

См. Также https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451, https://intellij -support.jetbrains.com / hc / en-us / community / posts / 206349469-disable-вызов unresolved-variable-on-json-object-by-by-ajax для других возможных обходных путей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...