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