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