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