GraphQL по сути не разрешает произвольные запросы к объектам.
Где-то в вашей схеме будет дополнительное объявление, например
type Query {
User(id: ID!): User
}
Имена в типе Query
- это запросы верхнего уровня, которые вы можете запустить, а аргументы, перечисленные в этом запросе, - это Только аргументы они принимают. (Существует соответствующий тип Mutation
для мутаций верхнего уровня, который может изменить основное состояние и использовать ключевое слово mutation
в запросе.)
Если вы контролируете реализацию сервера, вы можете добавить параметр или дополнительный запрос верхнего уровня
userByName(name: String!): User
, но вам также придется предоставить реализацию этого запроса или обработать дополнительный параметр, который является изменением кода.
Luca Tettamanti уже дал хорошие ответы на Ваши конкретные вопросы, таким образом, я просто предложу некоторую дополнительную информацию об общем предмете:
Я реализовал простой сменный API для приложения Flex с помощью ModuleManager
класс (и другой материал в mx.modules
пакет.) Суть его - то, что Вы разделяете плагины на подклассы от ModuleBase
и используйте ModuleManager
в приложении хоста для загрузки их. Затем у Вас есть реализация плагинов единый интерфейс (например. IMyAppPlugin
) и используйте своего рода фасад, чтобы представить и реализовать интерфейс к хост-приложению, которое могут использовать плагины (например. MyAppFacade implements IMyAppFacade
.) Каждый раз, когда плагины загружаются, введите эту ссылку фасада в них.
Тема "Модульный обзор приложений" в справке Flex 3 имеет некоторую хорошую информацию (подраздел "Домены модуля" обсуждает домены приложения в контексте модулей.) Вот выборка:
"По умолчанию модуль загружается в дочерний домен текущего домена приложения. Можно указать другой домен приложения при помощи applicationDomain свойства класса ModuleLoader".
Тема "Используя класс ApplicationDomain" входит в большую глубину на предмет доменов приложения, и необходимо определенно считать его, если Вы уже не имеете.
Btw, Flash player также понятие домена защиты, но я на самом деле никогда не касался его, таким образом, я не делаю известный, что возможности здесь.
Ответ на оператор относительно Java как возможная сменная архитектура:
Оказывается, что Java использовался для создания сменных систем архитектуры много лет. Относительно к клиентскому, Равноденствие платформы управления модулем OSGi является, вероятно, лучшим известным. Однажды Eclipse IDE осуществил рефакторинг их сменную архитектуру сверху Равноденствия OSGi. Eclipse IDE является, возможно, одной из самых успешных клиентских сменных систем архитектуры, все же созданных - с исторической точки зрения долговечности, а также ширины базы пользователей и последующего сообщества сменной разработки. Они также предлагают свою сменную архитектуру как основополагающую платформу для разработки произвольных клиентских приложений - Eclipse RCP.
Я просто должен был прервать это, потому что, хотя Java был расположен как, возможно, очень слабый выбор для этого, это на самом деле намного более успешно, чем какой-либо другой язык/среда выполнения до настоящего времени в поставке рабочих систем этого вида - особенно по сравнению с.NET C#, которая, конечно, имеет хорошее врожденное средство для модулей. Довольно нелепо, но там у Вас есть он.
Относительно Adobe AIR, я - dev управление проектом, это создается на AIR. В нашем случае наша расширяемость модуля всегда будет освобожденной от веб-сервера - не локальный каталог. Flex имеет
<mx:Module/>
тег для создания модулей, которые могут быть загружены дискретно во времени выполнения.
Увы, разочарование AIR является своим отсутствием любых API класса для запуска других приложений. Можно загрузить URL для загрузки чего-то в браузере по умолчанию пользователя, но Вы не можете запустить, скажем, Excel. И Java и C# имеют API для запуска других приложений как внешние процессы.
Вы пытались загрузить дополнительные приложения?
Для этого в AIR есть хорошая документация, и мне удалось это сделать за несколько часов. Однако одна и та же реализация - это другая история во Flex из-за нарушения изолированной программной среды между суб-приложением и основным приложением. Я целыми неделями бился головой о стену.