← Blog
·11 blog.minutes

Dizayn API: REST vs GraphQL vs gRPC — Kak Vybrat

REST, GraphQL i gRPC reshayut raznyye problemy. Eto rukovodstvo sravnivayet ikh dizayn-filosofii, kompromissy i idealnyye sluchai ispolzovaniya, chtoby vy mogli prinyat obosnovannoye resheniye dlya vashego sleduyushchego API.

Kazhdoye sovremennoye prilozheniye obshchayetsya s drugimi prilozheniyami cherez API. Vopros uzhe ne v tom, stroit li API, a v tom, kakoy stil API stroit. REST byl standartom po umolchaniyu boleye desyati let. GraphQL poyavilsya kak otvet na negibkost REST. gRPC primimayet sovershenno drugoy podkhod, osnovannyy na HTTP/2 i protokol bufferakh. Vybor mezhdu nimi trebuyet ponimaniya ne tolko sintaksisa, no i lezhashchey v osnove filosofii dizayna, kotoruyu kazhdyy iz nikh predstavlyayet.

Eto rukovodstvo razbirayet kazhdyy protokol s tochki zreniya dizayna: kak vy strukturiruyete resursy ili skhemy, kak klienty vzaimodeystvuyut s vashim API, kako vy rabotayete s versiyami i paginatsiyey, i kak trebovaniya k rabote v realnom vremenii vliyayut na resheniye. K kontsu u vas budet ramka dlya vybora pravilnogo instrumenta pod vashi konkretnyye ogranicheniya.

REST: Resursno-oriyentirovannyy dizayn, kotoryy ponimayet veb

REST — Representational State Transfer — eto ne protokol. Eto arkhitekturnyy stil, opredelyonnyy Royem Fildingom v yego doktorskoy dissertatsii 2000 goda. Osnovnaya ideya v tom, chto vy modeliruyete svoy domen kak resursy, kazhdyy identificirovannyy URL, i manipuliruyete etimi resursami cherez yedinyy nabor HTTP-verbov: GET, POST, PUT, PATCH i DELETE.

Khoroshiy dizayn REST API — eto resursno-oriyentirovannyy dizayn. Vy ne proyektiruyete tochki vkhoda vokrug deystviy — vy proyektiruyete tochki vkhoda vokrug sushchestvitelnykh. Vmesto /createUser ili /getUserById vy delayete POST /users i GET /users/:id. Eto kazhetsya nebolshim razlichiyem, no gluboko vliyayet na to, kak API masshtabiruyetsya, dokumetiruyetsya i kak klienty uchatsya yego ispolzovat.