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