Π£ Π½Π°Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ REST API / OpenAPI (TypeSpec) / ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ / ΠΠ΅Π½ΠΈΡ Π‘Π΅ΠΌΠ΅Π½Π΅Π½ΠΊΠΎ / #17 ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΡΡ Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅, Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ Π½Π° ΡΡΡΠ±. ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ· ΡΠΎΡΠΌΡ Π½ΠΈΠΆΠ΅:
ΠΡΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π½Π΅
Π·Π°Π³ΡΡΠ·ΠΈΠ»ΠΈΡΡ
ΠΠΠΠΠΠ’Π ΠΠΠΠ‘Π¬ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ
ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ Π²Π½ΠΈΠ·Ρ
ΡΡΡΠ°Π½ΠΈΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ClipSaver.ru
Π ΡΡΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΠΌΡ Ρ ΠΠ΅Π½ΠΈΡΠΎΠΌ Π‘Π΅ΠΌΠ΅Π½Π΅Π½ΠΊΠΎ, Principal Software Engineer Π² DocGo, ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ REST API, ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° TypeBox ΠΈ TypeSpec, ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΡΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. β ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΊΠ°Π½Π°Π» Β«ΠΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Β» Π² Telegram https://ttttt.me/orgprog β Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ°ΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌ (Apple Podcast, Google Podcast, Spotify, Π―Π½Π΄Π΅ΠΊΡ.ΠΡΠ·ΡΠΊΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅) https://podcast.ru/1734325321 ΠΡ Π·Π°ΡΡΠΎΠ½Π΅ΠΌ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ REST, Π΅Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ HATEOAS Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ REST ΠΈ RPC ΡΠ΅ΡΠ°ΡΡ ΡΡ ΠΎΠΆΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ JSON API ΠΈ GraphQL, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ OpenAPI ΠΈ Async API, ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. Π ΠΎΠ±ΡΠ΅ΠΌ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΠ·ΠΎΠ΄Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅. ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ: β Π’Π²ΠΈΡΡΠ΅Ρ ΠΠ΅Π½ΠΈΡΠ°: Β Β /Β denblackstacheΒ Β β Π’ΡΠ΅Π΄ ΠΏΡΠΎ REST API: https://x.com/mokevnin/status/1824512... β Hypermedia Factors. Π€Π°ΠΊΡΠΎΡΡ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ message formats ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ http://amundsen.com/hypermedia/hfactor/ β AsyncAPI https://www.asyncapi.com/ β OpenAPI Tools https://openapi.tools/ βΒ ΠΠ½ΠΈΠ³Π° Π‘Π΅ΡΠ³Π΅Ρ ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ½ΠΎΠ²Π° https://twirl.github.io/The-API-Book/... 00:00 ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ REST ΠΈ API 08:55 ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ API 12:44 ΠΠ½Π½ΠΎΠ²Π°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Ρ Closure 20:09 TypeSpec: ΠΡΠ΄ΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ API 24:47 Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ API 29:54 Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ OpenAPI ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ 34:36 ΠΠ½ΠΈΠ³Π° Π‘Π΅ΡΠ³Π΅Ρ ΠΠΎΠ½ΡΡΠ°Π½ΡΠΈΠ½ΠΎΠ²Π° ΠΈ ΠΌΠΈΡΠΎΠ»ΠΎΠ³ΠΈΡ REST 39:11 ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ hateOS ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 42:07 ΠΠΈΠΏΠ΅ΡΠΌΠ΅Π΄ΠΈΠ° ΠΈ Π΅Π³ΠΎ ΡΠΎΠ»Ρ Π² Π²Π΅Π±Π΅ 44:31 ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² 46:54 ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ API 48:54 ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° REST ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ RPC 51:18 ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ 54:33 Π‘ΡΠ°Π½Π΄Π°ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π² API 59:45 Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ JSON API ΠΈ GraphQL 01:04:31 ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² JSON 01:07:41 Π€ΠΎΡΠΌΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ 01:10:42 Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²Π΅Π± ΠΈ Π΅Π³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° API 01:12:56 ΠΠΈΠ±ΠΊΠΎΠ΅ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° 01:14:53 Π Π°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΎΠ² API ΠΈ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ 01:17:05 Π‘ΡΠ°Π½Π΄Π°ΡΡΡ API ΠΈ ΠΈΡ ΡΠ²ΠΎΠ»ΡΡΠΈΡ 01:20:40 ΠΡΠ±ΠΎΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ API 01:23:52 Frontend ΠΈ API: ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ 01:25:49 ΠΡΠ°ΡQL: Ρ Π°ΠΉΠΏ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΡ 01:29:11 ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ GraphQL 01:29:42 ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ REST API ΠΈ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° 01:30:12 ΠΠ½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ Ρ Ransack ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠ΅ΠΉ 01:31:14 Π€ΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ 01:32:53 ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Ransack Π² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ 01:35:34 ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Doreos ΠΈ Grape Π΄Π»Ρ API 01:37:14 ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΅Π΅ ΡΡΠΎΠ²Π½ΠΈ 01:39:35 ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Domain Driven Design #ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ #ΠΊΠΈΡΠΈΠ»Π»ΠΌΠΎΠΊΠ΅Π²Π½ΠΈΠ½ #restapi ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ REST API / OpenAPI (TypeSpec) / ΠΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ / ΠΠ΅Π½ΠΈΡ Π‘Π΅ΠΌΠ΅Π½Π΅Π½ΠΊΠΎ / #17