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

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

REST API ???????????? ????? ????????????? ???????? ??? ???????? ???-????????, ?????? ?????????? ?????????? ?????????? ????? ????????. ?????????? REST ???????????????? ??? Representational State Transfer. API ?????? ??????????? ????? ??????? ???????????? ???????. REST API ??????????? ???????????? HTTP-????????? ??? ???????? ?????????? ????? ???????? ? ????????. ?????? ???????? ?????? ?? ??????, ????????? ??????????? ?????? ? ????????. ?????? ????????? ?????? drgn ? ?????????? ????? ? ?????????????? ????, ???? ????? ? 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 ??????????? ? ??????????????? ???????????????????. ?????????? ?????????? ?????? ?????? ??????? ????????? ?????????? ? ????????????? ???????? ??????????? ????????????.