Я начинаю разработку в нетривиальном приложении, для которого мы рассматриваем GraphQL. При работе над первоначальным проектом нашей схемы я стал немного парализованным, пытаясь установить соглашения об именах, которые будут масштабироваться по мере созревания продукта. Я был бы очень признателен за то, что кто-то, кто должен был разработать схему и наткнулся на нее, или успешно избегал тупиков или несоответствий:
-
Как правило, полезно/идиоматично сохранять имя "Интерфейс" во имя интерфейса? Например, желательно ли
Profile
илиProfileInterface
в большом приложении?interface ProfileInterface { # fields here... } type UserProfile implements ProfileInterface { # implemented fields here... }
-
Общепринято ли указывать значения одиночного перечисления как "константы"?
enum GeoJSONFeatureTypeConstant { feature } interface GeoJSONFeatureInterface { id: ID type: GeoJSONFeatureTypeConstant! geometry: GeoJSONGeometryInterface! properties: GeoJSONProperties }
-
Лучше всего объявить все или ничего
object
какscalar
илиtype
, а где линия, нарисованная между двумя? Представьте, что типPoint
, который обычно представляется в виде массива[x,y]
; что было бы более идиоматичным?scalar Point type Point { x: Float y: Float }
- Любые другие передовые методы, специально связанные с соглашениями об именах или объявлениями типов в GraphQL, которые будут трудно знать без опыта.
Спасибо заранее!
Этот вопрос не получил импульса, который мне бы очень понравился, поэтому я собираюсь начать публикацию полезных фрагментов, когда я их нахожу, что может превратиться в ответ рода.
Именование типов ввода с помощью ввода в конце - полезное соглашение, потому что вам часто требуется как тип ввода, так и тип вывода, который немного отличаются для одного концептуального объекта.