рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЕрдкрдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рд▓рд┐рдЦрдирд╛: рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рдУрд░рд┐рдПрдВрдЯреЗрдб рдЕрдкреНрд░реЛрдЪ



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


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

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЙрдиреНрдореБрдЦ
  • рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди
  • рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди
  • рд╕реБрд░рдХреНрд╖рд┐рдд рдЯрд╛рдЗрдк рдХрд░реЗрдВ
  • рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдПрдирдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛


рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рдж рдХреИрд╕реЗ рд╣реЛрдЧрд╛:



рдХреЗрд╡рд▓ рд░рд╛рдЙрдЯрд░.рд░реЗрдХреНрд╡реЗрд╕реНрдЯ ( рдФрд░ ред рдПрдиреБрдорд░реЗрд╢рдВрд╕ рдХреА рд╕рднреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд╣рдо рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рдЙрдирдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛

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



Endpointtype рдкреНрд░реЛрдЯреЛрдХреЙрд▓

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



HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рд╣рдорд╛рд░реЗ EndPointType рдореЗрдВ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреНрдпрд╛ рд╣реИрдВред

HTTPMethod

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ HTTPMethod рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реЛрдз рдХреЗ HTTP рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



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



рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдЙрдирдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ

HTTPHeaders

HTTPHeaders рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЯрд╛рдЗрдкреЗрд▓рд┐рдпрд╕ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА HTTPTask рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

public typealias HTTPHeaders = [String:String] 


рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ ParameterEncoding рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред Parameters рдХреЗ рд▓рд┐рдП typealias рдмрдирд╛рдПрдБ, рдпрд╣ рдлрд┐рд░ рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рд╢рдмреНрджрдХреЛрд╢ рд╣реЛрдЧрд╛ред рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдФрд░ рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

 public typealias Parameters = [String:Any] 


рдЕрдЧрд▓рд╛, рдПрдХ рдПрдХрд▓ рдПрдиреНрдХреЛрдб рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ ParameterEncoder рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред рдПрдирдХреЛрдб рд╡рд┐рдзрд┐ рдХреЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: рдЗрдирд░ URLRequest рдФрд░ Parameters ред INOUT рдПрдХ рд╕реНрд╡рд┐рдлреНрдЯ рдХреАрд╡рд░реНрдб рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдХрд┐рд╕реА рдХреЙрд▓ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдирд╛рдЙрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрдирдЖрдЙрдЯ рддрд░реНрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, inout рдЖрдкрдХреЛ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рди рдХреЗрд╡рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЗрд╕рдХрд╛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред ParameterEncoder рдкреНрд░реЛрдЯреЛрдХреЙрд▓ JSONParameterEncoder рдФрд░ URLPameterEncoder рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 public protocol ParameterEncoder { static func encode(urlRequest: inout URLRequest, with parameters: Parameters) throws } 


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

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



рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЗрд╕реЗ URLParameterEncoder рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред



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

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

JSONParameterEncoder

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ, рдЗрд╕реЗ JSONParameterEncoder рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред



URLParameter рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИ, рдмрд╕ рдпрд╣рд╛рдВ рд╣рдо JSON рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓реЗрдВрдЧреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╣реЗрдбрд░ рдХреЛ "рдПрдкреНрд▓реАрдХреЗрд╢рди / json" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗред

NetworkRouter

рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ NetworkRouter рдирд╛рдо рджреЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдкреЗрд▓рд┐рдпрд╛рд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

 public typealias NetworkRouterCompletion = (_ data: Data?,_ response: URLResponse?,_ error: Error?)->() 


рдЕрдЧрд▓рд╛, рд╣рдо NetworkRouter рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред



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

рд░реВрдЯрд░

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



рдкреНрд░рд╛рд░реНрдердирд╛

рдпрд╣рд╛рдВ рд╣рдо URLSession рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ URLSession.sared рдмрдирд╛рддреЗ рд╣реИрдВ , рдпрд╣ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ рд╣реИред рдЖрдк рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ URLSession рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред

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



рдЕрдиреБрд░реЛрдз рдмрдирд╛рдПрдБ

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

1. рд╣рдо URLRequest рдЕрдиреБрд░реЛрдз рдЪрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕рдореЗрдВ рдЕрдкрдирд╛ рдЖрдзрд╛рд░ URL рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

2. рд╣рдорд╛рд░реЗ EndPoint рд╕реЗ http рд╡рд┐рдзрд┐ рд╕реЗ рдЕрдиреБрд░реЛрдз рдирд┐рд╡реЗрджрди рдХрд░реЗрдВ ред

3. рд╣рдо рдПрдХ do-try-catch рдмреНрд▓реЙрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдПрдирдХреЛрдбрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрдбрд╝реЗ do-try-catch рдмреНрд▓реЙрдХ рдХреЛ рдмрдирд╛рдХрд░, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдмреНрд▓реЙрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

4. рд╕реНрд╡рд┐рдЪ рдореЗрдВ, path.task рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

5. рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдПрдирдХреЛрдбрд░ рдХрд╣рддреЗ рд╣реИрдВред



рдкреИрд░рд╛рдореАрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ

рд░рд╛рдЙрдЯрд░ рдореЗрдВ configParameters рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВред



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

рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВ

рд░рд╛рдЙрдЯрд░ рдореЗрдВ addAdditionalHeaders рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВред



рдмрд╕ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВред

рд░рджреНрдж рдХрд░рдирд╛

рд░рджреНрдж рдХрд░реЗрдВ рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧреЗрдЧрд╛:



рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЕрдм рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣рдорд╛рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TheMovieDB рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред

MovieEndPoint

рдПрдХ MovieEndPoint рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ рдФрд░ рдЙрд╕реЗ EndPoint рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред MovieEndPoint рд╕рдорд╛рди рд╣реИ
рдФрд░ Moy рдореЗрдВ рдЯрд╛рд░рдЧреЗрдЯ рдЯрд╛рдЗрдк рдХрд░реЗрдВред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ EndPointType рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЛрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд▓реЗрдЦ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 import Foundation enum NetworkEnvironment { case qa case production case staging } public enum MovieApi { case recommended(id:Int) case popular(page:Int) case newMovies(page:Int) case video(id:Int) } extension MovieApi: EndPointType { var environmentBaseURL : String { switch NetworkManager.environment { case .production: return "https://api.themoviedb.org/3/movie/" case .qa: return "https://qa.themoviedb.org/3/movie/" case .staging: return "https://staging.themoviedb.org/3/movie/" } } var baseURL: URL { guard let url = URL(string: environmentBaseURL) else { fatalError("baseURL could not be configured.")} return url } var path: String { switch self { case .recommended(let id): return "\(id)/recommendations" case .popular: return "popular" case .newMovies: return "now_playing" case .video(let id): return "\(id)/videos" } } var httpMethod: HTTPMethod { return .get } var task: HTTPTask { switch self { case .newMovies(let page): return .requestParameters(bodyParameters: nil, urlParameters: ["page":page, "api_key":NetworkManager.MovieAPIKey]) default: return .request } } var headers: HTTPHeaders? { return nil } } 


MovieModel

рдореЙрдбрд▓ рдореЗрдВ MovieModel рдФрд░ JSON рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Decodable рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдореЙрдбрд▓ рдлреЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред

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

 import Foundation struct MovieApiResponse { let page: Int let numberOfResults: Int let numberOfPages: Int let movies: [Movie] } extension MovieApiResponse: Decodable { private enum MovieApiResponseCodingKeys: String, CodingKey { case page case numberOfResults = "total_results" case numberOfPages = "total_pages" case movies = "results" } init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: MovieApiResponseCodingKeys.self) page = try container.decode(Int.self, forKey: .page) numberOfResults = try container.decode(Int.self, forKey: .numberOfResults) numberOfPages = try container.decode(Int.self, forKey: .numberOfPages) movies = try container.decode([Movie].self, forKey: .movies) } } struct Movie { let id: Int let posterPath: String let backdrop: String let title: String let releaseDate: String let rating: Double let overview: String } extension Movie: Decodable { enum MovieCodingKeys: String, CodingKey { case id case posterPath = "poster_path" case backdrop = "backdrop_path" case title case releaseDate = "release_date" case rating = "vote_average" case overview } init(from decoder: Decoder) throws { let movieContainer = try decoder.container(keyedBy: MovieCodingKeys.self) id = try movieContainer.decode(Int.self, forKey: .id) posterPath = try movieContainer.decode(String.self, forKey: .posterPath) backdrop = try movieContainer.decode(String.self, forKey: .backdrop) title = try movieContainer.decode(String.self, forKey: .title) releaseDate = try movieContainer.decode(String.self, forKey: .releaseDate) rating = try movieContainer.decode(Double.self, forKey: .rating) overview = try movieContainer.decode(String.self, forKey: .overview) } } 


NetworkManager

рдкреНрд░рдмрдВрдзрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ NetworkManager рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдлрд┐рд▓рд╣рд╛рд▓, NetworkManager рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рд╕реНрдерд┐рд░ рдЧреБрдг рд╣реИрдВ: рдПрдХ API рдХреБрдВрдЬреА рдФрд░ рдПрдХ рдЧрдгрдирд╛ рдЬрд┐рд╕рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред NetworkManager рдореЗрдВ рдПрдХ Router рднреА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ MovieApi рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ ред



рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

NetworkResponse рдЧрдгрди рдмрдирд╛рдПрдБ NetworkManager рдореЗрдВред



рдЬрдм рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЗрд╕ рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЗрд╕реА рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред

рдкрд░рд┐рдгрд╛рдо

NetworkManager рдореЗрдВ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдЧрдгрдирд╛ рдмрдирд╛рдПрдБред



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

рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

рд╣реИрдВрдбрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдЯрд╡рд░реНрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ HTTPResponse, рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред



рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, HTTPResponse рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреЗрдЯрд╕рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдпрд╛ рдПрдХ рд╕рдлрд▓ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, 200..299 рдХреА рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рдХреЛрдб рдХрд╛ рдорддрд▓рдм рд╕рдлрд▓рддрд╛ рд╣реИред

рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЗрдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

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



рдЖрдЗрдП рдЗрд╕реЗ рдХрджрдо рд╕реЗ рдХрджрдо рдорд┐рд▓рд╛рдХрд░ рд▓реЗрдВ:

1. рд╣рдо getNewMovies рдкрджреНрдзрддрд┐ рдХреЛ рджреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рдкреГрд╖реНрдард╛рдВрдХрди рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреВрд░реНрдг рд╣реИрдВрдбрд▓рд░, рдЬреЛ рдореВрд╡реА рдореЙрдбрд▓ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рд░рдгреА рдпрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

2. рд░рд╛рдЙрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рд╣рдо рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред

3. URLSession рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдПрдкреАрдЖрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреА рдЦрд░рд╛рдм рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИрдВред

4. рд╣рдореЗрдВ HTTPURLResponse рдкрд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕реНрдЯреЗрдЯрд╕рдХреЛрдб рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

5. рдкрд░рд┐рдгрд╛рдо рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░реЗрдВ NetworkResponse рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ

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

7. рдпрджрд┐ рдЙрддреНрддрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рддреЛ рдореЙрдбрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдореЙрдбрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рдгреА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

8. рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рдХрд░реЗрдВред

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

  class MainViewController: UIViewController { var networkManager: NetworkManager! init(networkManager: NetworkManager) { super.init(nibName: nil, bundle: nil) self.networkManager = networkManager } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .green networkManager.getNewMovies(page: 1) { movies, error in if let error = error { print(error) } if let movies = movies { print(movies) } } } } 


рдЫреЛрдЯрд╛ рдмреЛрдирд╕

рдЖрдкрдХреЗ рдкрд╛рд╕ Xcode рдореЗрдВ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдереАрдВ рдЬрдм рдЖрдкрдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдкрд░ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╕рд┐рд░реНрдл рд░рд╛рдЙрдЯрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рд╣реИред



рд╣рдордиреЗ рдЦреБрдж NetworkRouterCompletion рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдпрд╣ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкреНрдпрд╛рд░реЗ Xcode рдиреЗ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрд╛, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ Xcode рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЧрд╛ред



рдирд┐рд╖реНрдХрд░реНрд╖

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓-рдЙрдиреНрдореБрдЦ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░рдд рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдордЭрд╛ рдФрд░ рд╕рднреА рддрдВрддреНрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реЛрд░реНрд╕ рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles