[рдХреНрдпрд╛ рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рд╣реИ] ... рдФрд░ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ , рд╣рдордиреЗ рдЧреНрд░рд╛рдлрдХреЙрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрд┐рдВрджреБрдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреАред
рдФрд░ рдЕрдм рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рд╕рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред


рд╡рд┐рднрд╛рдЬрди рд╕рдВрдЦреНрдпрд╛ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рдирд╕реЗ рдореИрдВ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред


1.2 NON_NULL INPUT


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдордиреЗ рдЙрд╕ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬреЛ рдЧреНрд░рд╛рдлрдХреЙрд▓ рдореЗрдВ рдПрдХ рдЕрд╢рдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред


рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░реЛрдВрдЪ рд╕реЗ рдЖрдВрд╢рд┐рдХ рдЕрджреНрдпрддрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - REST рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ HTTP PATCH рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧред рдкрд┐рдЫрд▓реА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдореБрдЭреЗ "REST" рд╕реЛрдЪ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓реЛрдЪрдирд╛ рдХреА рдЧрдИ рдереАред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ CRUD рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рддрд╛ рд╣реИред рдФрд░ рдореИрдВ REST рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рдерд╛, рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ "рдРрд╕рд╛ рди рдХрд░реЗрдВред" рд╣рд╛рдВ, рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рдорд┐рд▓ рдЧрдпрд╛ред


рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд╛рдкрд╕ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ, рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп CRUD рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:


  1. рдкреАрдЫреЗ рд╕реЗ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдорд┐рд▓рд╛ред
  2. рд╕рдВрдкрд╛рджрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдлрд╝реАрд▓реНрдбред
  3. рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреЙрд░реНрдб рднреЗрдЬрд╛ред

рдЖрдВрд╢рд┐рдХ рдЕрджреНрдпрддрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддреЛ, рдЕрдЧрд░ рд╣рдо рдПрдХ рдЗрдирдкреБрдЯ рдореЙрдбрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


 input ExampleInput { foo: String! bar: String } 

рддрдм рдЬрдм рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде ExampleInput рдХрд╛ рдПрдХ рдЪрд░ рдореИрдкрд┐рдВрдЧ


 { "foo": "bla-bla-bla" } 

рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ DTO рдкрд░:


 ExampleDTO { foo: String #   bar: ?String #   } 

рд╣рдореЗрдВ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ DTO рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:


 { foo: "bla-bla-bla", bar: null } 

рдФрд░ рдЬрдм рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рдореИрдкрд┐рдВрдЧ


 { "foo": "bla-bla-bla", "bar": null } 

рд╣рдореЗрдВ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреЗ рд╕рдорд╛рди рдореВрд▓реНрдп рд╡рд╛рд▓рд╛ DTO рдСрдмреНрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ:


 { foo: "bla-bla-bla", bar: null } 

рдпрд╣реА рд╣реИ, рдПрдиреНрдЯреНрд░рд╛рдкреА рд╣реЛрддреА рд╣реИ - рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЗрд╕реЗ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдпрд╛ рдЗрд╕реЗ null рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ null ред


рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдиреЗ рдкрд░, рдЧреНрд░рд╛рдлрдХреЙрд▓ рдПрдХ рдЖрд░рдкреАрд╕реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИред рдФрд░ рдореИрдВрдиреЗ рдпрд╣ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдкреАрда рдкрд░ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЪрд╛рд╣рд┐рдП, рд╡реИрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдмреИрдХрдПрдВрдб рдкрд░, рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЦреЗрддреЛрдВ рдХрд╛ рдПрдХ рдЖрдВрд╢рд┐рдХ рдЕрджреНрдпрддрди рдХрд░рддрд╛ рд╣реВрдВ:


 $repository->find(42)->setFoo('bla-bla-lba'); 

рдпрд╣реА рд╣реИ, рдореИрдВ рд╕рдЪрдореБрдЪ рдПрдХ рдЗрдХрд╛рдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕реЗрдЯрд░ рдХреЛ рдирд╣реАрдВ рдЫреВрддрд╛, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЧреНрд░рд╛рдлрдХрд╛рдЗ рд╕реНрдХреАрдорд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ:


 type Mutation { entityRepository: EntityManager! } type EntityManager { update(id: ID!): PersitedEntity } type PersitedEntity { setFoo(foo: String!): String! setBar(foo: String): String } 

рдЕрдм, рдпрджрд┐ рд╣рдо рдЪрд╛рд╣реЗрдВ, рддреЛ рд╣рдо setBar рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдорд╛рди рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдирд╣реАрдВ рдЫреВ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдореВрд▓реНрдп рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, partial update рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИред рдХреБрдЦреНрдпрд╛рдд рдмрд╛рдХреА рд╕реЗ PATCH рд╕реЗ рдмрджрддрд░ рдирд╣реАрдВ рд╣реИред


рдкрд┐рдЫрд▓реА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рд╕рдорд░рд╡рд┐рдВрдб рдиреЗ рдкреВрдЫрд╛: рд╣рдореЗрдВ partial update рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ: рдмрд╣реБрдд рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред

3. рдмрд╣реБрд░реВрдкрддрд╛


рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрдирдкреБрдЯ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ "рдПрдХ рдФрд░ рд╕рдорд╛рди" рдХреА рддрд░рд╣ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдирд╣реАрдВред рдореИрдВ рдкрд┐рдЫрд▓реЗ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред


 #   AccountInput { login: "Acme", password: "***", subject: OrganiationInput { title: "Acme Inc" } } 

 #    AccountInput { login: "Acme", password: "***", subject: PersonInput { firstName: "Vasya", lastName: "Pupkin", } } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рдПрдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЧреНрд░рд╛рдлрдХреЙрд▓ рдмрд╕ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред рддреЛ, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╡рд┐рдзрд┐ реж - рдорд╛рдерд╛


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рдЗрдирдкреБрдЯ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рднрд╛рдЧ рдХрд╛ рдкреГрдердХреНрдХрд░рдг:


 input AccountInput { login: String! password: Password! subjectOrganization: OrganiationInput subjectPerson: PersonInput } 

рд╣рдореНрдо ... рдЬрдм рдореБрдЭреЗ рдРрд╕рд╛ рдХреЛрдб рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдХреНрд╕рд░ рдЬреЛрд╕реЗрдлрд┐рди рдкрд╛рд╡рд▓реЛрд╡рдирд╛ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореБрдЭреЗ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред


рд╡рд┐рдзрд┐ 1 - рдорд╛рдереЗ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд╛рдереЗ рдкрд░
рдлрд┐рд░ рдпрд╣ рддрдереНрдп рдореЗрд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдХрд┐ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпреВрдпреВрдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдЗрд╕реЗ рд╕рднреА рдХреЛ рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВ - рдпрд╣ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдорджрдж рдХрд░реЗрдЧрд╛)ред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдЧреНрд░рд╛рд╣рдХ рдкрд░ рд╕реАрдзреЗ рд╡реИрдз рдЗрдХрд╛рдЗрдпрд╛рдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрдиреНрд╣реЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдмрд╛рдВрдз рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреИрдХ-рдПрдВрдб рдкрд░ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВред


рддрдм рд╣рдо рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 input AccountInput { login: String! password: Password! subject: SubjectSelectInput! } input SubjectSelectInput { id: ID! } type Mutation { createAccount( organization: OrganizationInput, person: PersonInput, account: AccountInput! ): Account! } 

рдпрд╛, рдЬреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЧрдпрд╛ (рдХреНрдпреЛрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдЬрдм рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдкреАрдврд╝реА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ), рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ:


 type Mutation { createAccount(account: AccountInput!): Account! createOrganization(organization: OrganizationInput!): Organization! createPerson(person: PersonInput!) : Person! } 

рдлрд┐рд░, рд╣рдореЗрдВ createAccount рдФрд░ createOrganization / createPerson рдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛
рдПрдХ рдмреИрдЪред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рддрдм рдмреИрдЪ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╡рд┐рдзрд┐ 2 - рдореИрдЬрд┐рдХ рд╕реНрдХреЗрд▓рд░
рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ GraphQL рдореЗрдВ рд╕реНрдХреЗрд▓рд░ рди рдХреЗрд╡рд▓ Int , Sting , Float , рдЖрджрд┐ рд╣реИред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдХреБрдЫ рднреА рд╣реИ (рдареАрдХ рд╣реИ, рдЬрдмрдХрд┐ JSON рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ)ред
рддреЛ рд╣рдо рдмрд╕ рдПрдХ рдЕрджрд┐рд╢ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 scalar SubjectInput 

рдлрд┐рд░, рдЙрд╕ рдкрд░ рдЕрдкрдирд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдпрд╣ рд╕реНрдЯреАрдореНрдб рдирд╣реАрдВ рд╣реИред рддрдм рд╣рдо рдЪрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЗрдирдкреБрдЯ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реНрдЪреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреМрди рд╕рд╛ рддрд░реАрдХрд╛ рдЪреБрдирдирд╛ рд╣реИ? рдореИрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
рдпрджрд┐ рдореВрд▓ рдЗрдХрд╛рдИ рдмрдЪреНрдЪреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдЧреНрд░рд┐рдЧреЗрдЯ рд░реВрдЯ рд╣реИ, рддреЛ рдореИрдВ рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЪреБрдирддрд╛ рд╣реВрдВ, рдЕрдиреНрдпрдерд╛ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ред


4. рдкреАрдврд╝реАред


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рддреБрдЪреНрдЫ рд╣реИ рдФрд░ рдореБрдЭреЗ рдХреЛрдб рдкреАрдврд╝реА рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдФрд░ рд░реЗрд▓ рдХреЗ рдмрд┐рдирд╛ (рд░реЗрд▓реНрдЯ / sdl рдкреИрдХреЗрдЬ) рдореИрдВ (рдпрд╛ рдмрд▓реНрдХрд┐, рдореИрдВ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛)ред рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд░реЗрд▓ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (рдХрд▓реНрдкрдирд╛ рдкрддреНрд░ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕реА рдХреЛрдИ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ)ред


 directive @example on DOCUMENT 

рдЕрд░реНрдерд╛рддреН, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЙрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдкреЗрд╢ рдХрд┐рдП:


 directive @defineMacro(name: String!, template: String!) on DOCUMENT directive @macro(name: String!, arguments: [String]) on DOCUMENT 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдореИрдХреНрд░реЛрдВ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ ...


рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЕрддреАрдд рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╢реЛрд░ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреАред рд╕рднреА рд╕рдорд╛рди, рд╢реАрд░реНрд╖рдХ "рд╕реБрдВрджрд░" рдерд╛)


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдЦрдмреНрд░реЛрд╡рд╕реНрдХ рдирд┐рд╡рд╛рд╕реА рдкрд╣реБрдВрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреВрдм рдЧрдП ... рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓рд╛ рд▓реЗрдЦ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/hi435690/


All Articles