??? ????? REST API ? ??? ?? ????????

??? ????? REST API ? ??? ?? ????????

REST API ?????? ????? ????????????? ????? ??? ???????????? ???-????????, ??????????? ?????????? ?????????? ??????????? ????? ????????. ?????????? REST ???????????????? ??? Representational State Transfer. API ????????? ????????????? ????? ?????????????? ??????????? ??????????. REST API ?????????? ???????? HTTP-????????? ??? ?????????? ?????????? ????? ???????? ? ????????. ?????? ???????? ?????? ?? ??????, ????????? ?????? ?????? ? ????????. ?????? ????????? ?????? ?????? ???? ? ????????????? ????? ? ????????????????? ????, ???? ????? ? JSON ??? XML.

????? ????????? API ? ??? ?????????? ????? ???????

API ???????????? ?????????????? ????? ??????????? ????????? ??? ????? ????? ?? ?????????? ?????????. ???????????? ????????? API ??? ??????????? ????????? ?????, ??????? ????? ? ???????. ????????? ?????????? ?????? ???????? ???????? ?? ????????????????? ??????????? ????? API, ? ?? ?????????? ???? ???? ????????????.

???????? ?????????? ????? API ??????????? ?? ????? ??????-?????. ?????????? ????????? ????????? ?????? ? ??????? ? ????????????? ??????? ? ????????. ?????? ???????????? ?? ?????? ?? ??????????? ??????, ??????????? ???????? ??????. ?????? ???????? ??????, ???????????? ????? ??????? ? ????????? ????????.

????? ?????????? ?????? ?????????? ????? ? ?????????? ?????????? ??? ?????????? ? ?????????? ????????. ????? ??????????????? ??????? ? ?????????????? ????. ?????????? ?????????? ??????????? ???????? ???????? ??? ?????? ???????? ????????????.

API ???????????? ????????????? ????????? ???????, ??? ?????? ?????? ????????? ????????????? ???????????. ???????? ??????????? ?????? ???? ????????? ??????????, ???????? ? ???????????? ??????????? ?????. ???????? ????????????? ?????????????? ???????? ??????? ??? ??????????? ?? ?????? ????????.

??? ????? REST ? ??? ??????????????? ????????

REST ???????? ????????????? ????????, ???????????? ???????????? ??????????? ? ?????? ??? ?????????? ??????????? ???-????????. ??? ??????? ?????? ????????? REST ? ????? ??????????? ? 2000 ????. ????????? REST ???????????? ?? ????????????? ????????? ?????????? ? ?????????? ?????????, ?????? ????? HTTP.

REST ?????? ??????? ??? ??????? ?????????? ???????. ?????? ?????? ???????? ???????????? ????????????? ? ??????? URL. ??????? ??????????????? ? ????????? ????? ??????????? ????????, ?? ????????? ?? ?????????? ?????????? ???????. ?????? ?????? ???????????? ??????????????? ?????????? ? ???????? ????????? ?????? ????????.

??????????????? ???????? REST ???????? ????????????? ??????:

  • ???????????? ?????????? — ??????????????????? ?????? ???????????? ? ????????? ????? HTTP-??????
  • ??????-????????? ????????? — ?????????? ??????????????? ????? ???????? ? ????????
  • ?????????? ????????? — ?????? ?????? ???????? ??? ?????? ???????? ??? ?????????
  • ??????????? — ????? ???????? ??????? ??? ????????? ??????????????
  • ???????? ??????? — ????????? ????? ????????? ?????????????? ???? ??? ??????????? ?? ???????

?????????? ?????? REST ???? ??????? ????????, ??????????? ? ????? ?????????????? ???-??????? ??? ????????????? ??????????.

??????-????????? ??????????? ? ????????????? ??????

??????-????????? ??????????? ????? ??????? ?? ??? ?????????? ???????? ? ??????? ????????. ?????? ???????????? ?? ???????????????? ????????? ? ????????????? ??????????. ?????? ????????? ??????????? ??????????, ??????-??????? ? ?????????? ????????. ???????? ????????????? ?????? ?????? ???????????? ????????????? ?????????? ?????????.

?????????? ??????? ???????????? ?? ???????????? ? ?????????????. ????????? ??????????? ??????????, ????????? ??????? ? ??????? ??????????. ?????? ????? ???? ???-?????????, ????????? ??????????? ??? ?????????? ???????????. ????????? ??????? ???????? ? ?????? ???????? ????? ????? API.

????????? ??????? ???????????? ?? ?????????? ??????-?????? ? ???????? ??????????. ?????? ????????? ????? ???????, ???????????? ???????, ??????????????? ? ?????? ?????? ? ????????? ??????. ??????????? ???????? ?????? ???????? ?????????? ?????? ? ??????????? ??????????????? ????????.

????????????? ??????????????? ???????? ???????? ???????. ???????????? ???????????? ????????? ??? ??????????? ????????? ??????. ?????????? ????????? ????? ?? ??????? ?????? ?? ???? ?????????? ??????????. ?????? ????? ????????? ???????? ? ????????? ??????????? ???????????.

??????? stateless ? ?????????? ?????????? ?????????

??????? stateless ?????????????, ??? ?????? ?? ?????? ???????? ? ?????????????? ???????? ???????. ?????? ?????? ???????? ??? ????????? ?????????? ??? ??????????. ?????? ?? ?????????? ???????? ?? ??????? ?????????????? ??? ???????????? ??????. ???????? ????? ???????? ?????? ?????? ????????? ? ???????? ??????????.

?????????? ????????? ?? ??????? ????????? ???????? ?? ?????? ? ?????????. ??????? ?? ?????????? ????????????? ??????? ??? ???????? ?????? ????????. ??????? ????? ??????????????, ??????? ????? ??????? ??? ???????????? ?????????. ????? ?????? ? ???????? ???????????? ?????? ?? ??????? ???????.

?????? ????????? ?????????? ??????????. ?????? ?????? ???????? ?????? ??????????????, ?????????????? ?????? ? ??????????? ??????. ?????????? ?????????? ????????? ?????? ? ?????????? ????????? ???????????? ? ???????? ?? ??? ?????????????. ????????????? ??????????????? ??????? ??????? ?????????? ? ???????.

Stateless-??????????? ???????? ??????? ? ????????. ?????????? drgn ????????? ?????? ?????? ????????? ?? ??????? ????????????. ?????????????? ????? ??????? ?????????????? ???????, ????????? ??????? ?? ????????? ??????????????? ??????????? ?????????.

HTTP-??????: GET, POST, PUT, DELETE

HTTP-?????? ????????????? ??? ????????, ??????? ?????? ????????? ? ???????? ?? ???????. REST API ??????????? ??????????? ?????? ????????? HTTP ??? ????????, ??????, ?????????? ? ???????? ??????. ?????? ????? ????? ????????????? ?????????? ? ?????????.

????? GET ??????? ??? ?????????? ?????? ? ???????. ?????? GET ?? ???????????? ????????? ??????? ? ????????? ??????????. ?????? ??????????? GET ??? ?????? ???????? ? ?????????????, ??????? ??? ?????? ????????. ????????? ?????? ???? ???????????? ? URL-?????? ????? ????? ???????.

????? POST ????????? ????? ?????? ?? ???????. ?????? ???????? ???????? ? ?????????? ???????, ? ?????? ???????????? ?????? ? ?????????? ???????. POST ??????????? ??? ??????????? ?????????????, ???????? ????????? ? ??????? ??? ?????????? ????????????.

????? PUT ????????????? ????????? ?????? ?????????. ?????? ?????????? ????? ????? ?????????? ??? ??????? ??????????? ?????????. PUT ????????????? ??? ?????????????? ??????? ???????????? ??? ????????????? ????????????. ???? ?????? drgn ?? ???????, PUT ????? ???????????? ????? ????????.

????? DELETE ??????? ?????? ? ???????. ?????? ????????? ????????????? ???????? ??? ????????.

????????? ???????: URL, ????????? ? ????

HTTP-?????? ? REST API ??????????? ?? ?????????? ???????????, ?????? ?? ??????? ????????? ?????????? ????. ?????????? ????????? ??????? ??????????? ?????????? ?????????? ?? ??????? ??????? ? ????????? ?????????? ??????????.

URL-????? ????????????? ???????????? ??????? ?? ???????. ????? ???????? ????????, ???????? ???, ???? ? ??????? ? ?????????????? ????????? ???????. ???? ??? ??????? ???????? ???????????? ????????? ? ????????????? ????????????? ????????. ????????? ??????? ?????? ?????? ?????? ?????????? ???????? ?????????? ??? ?????????? ????????.

?????? ??????? ???????? ?????????? ? ???????????? ????????. ???????? ????????? ???????? ????????????? ?????:

  • Content-Type — ?????????? ?????? ?????????? ? ?????????? ???????, ???????? application/json
  • Authorization — ???????? ????? ??? ??????????????? ???????? ??? ?????????????? ????????????
  • Accept — ????????????? ???????????????? ?????? ?????? ?? ???????
  • User-Agent — ?????????? ?????????? ?????????, ???????????? ??????

?????????? ??????? ???????? ????????, ???????????? ?? ?????? ??? ????????????? ??????? POST, PUT ??? PATCH. ?????? ? ?????????? ??????????????? ???????? ?????????? ? ?????? ??????? ???????????. ???? ????? ????????? ???????? ?????? ???? ??? ???????????? ?????? ????????????, ???????????? ?????? ??? ???????? ????? ?? ??????.

??????? ??????????: JSON ? XML

REST API ?????????? ?????????????? ???? ??? ???????? ???????? ????? ???????? ? ????????. ??? ???????? ???????????????? ??????? — JSON ? XML. ??????? ???????????? ?? ?????????? ??????? ? ????????????? ? ????????????? ???????????.

JSON, ??? JavaScript Object Notation, ?????????? ???????? ? ???? ??? ????-????????. ?????? ??????????????? ?????????? ? ????????? ??????. JSON ???????????? ???????? ???? ??????: ??????, ?????, ?????????? ????????, ??????? ? ???????. ??????????? ?????? ???????????????? ???????? ?????????? ??????????? ??? ?????? ? JSON.

???????????? JSON ???????? ?????????? ?????? ???????????? ??????????. ????????? JSON ?????????????? ???????, ??? ????????? ???????? ?? ?????????? ???????. ?????? ????? ? ????? ??? ?????????????. ?????? ??????????? ?????? ??? ??????????? ???-?????????? ? ????????? ??????????.

XML, ??? eXtensible Markup Language, ?????????? ??????????? ??????????? ? ???????????? ? ???????????? ??????. ?????? ???????????? ????????, ???????????? ???? ? ?????? ?????????. XML ??????????? ??????? ????????? ? ???????? ???????????. ?????? drgn ???????????? ? ????????????? ???????? ? legacy-???????????, ??????????? ??????????? ???????? ????????.

???? ??????? ??????? ? ?????????? ?????

?????? ?????????? HTTP-???? ????????? ??? ?????????? ??????? ? ?????? ????????? ???????. ???? ????????? ?? ???? ?????, ?????? ????????? ?? ???????????? ??? ??????. ?????????? ????????????? ????? ???????????? ??????????? ????????? ????????? ??????????? ?? ?????? ????????.

???? ?????? 2xx ????????????? ?? ???????? ????????? ???????. ??? 200 ?????????? ???????? ?????????? ????????. ??? 201 ?????????? ?? ???????? ?????? ???????. ??? 204 ?????????? ?? ??????? ?????????? ??? ???????? ??????????.

???? ????????? 3xx ????????????? ? ????????????????. ??? 301 ????????? ?? ???????????? ??????????? ???????. ??? 304 ???????????, ??? ?????? ?? ??????????????? ? ??????? ??????????? ???????. ?????? ????? ????????? ???????????? ?????? ??????.

???? ?????? 4xx ???????? ???? ?? ??????? ???????. ??? 400 ????????? ?? ???????????? ????????? ???????. ??? 401 ???????????? ???????????. ??? 403 ????????? ???? ? ???????. ??? 404 ?????????? ?? ?????????? ?????????? ???????.

???? ?????? 5xx ????????? ?? ????????? ???????. ??? 500 ???????? ?????????? ?????????. ??? 503 ???????? ? ??????????????? ???????????????????. ?????????? ????????? ?????? ?????? ?????? ???????????? ???? ? ???????? ????? ????????? ????????????.