??? ????? 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 ??????????? ? ????????? ???????????????????. ?????????? ?????????? ?????? ?????? ??????? ????????? ???? ? ???????? ???????? ????????? ????????????.