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

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

REST API ?????????? ????? ????????????? ??????? ??? ?????????? ???-????????, ??????????? ?????????? ???????? ??????????? ????? ????????. ?????????? REST ???????????? ??? Representational State Transfer. API ?????? ??????????? ????? ?????????????? ???????????? ????????????. REST API ????????? ???????????? HTTP-????????? ??? ?????????? ?????? ????? ???????? ? ????????. ?????? ?????????? ?????? ?? ??????, ???????? ?????? ?????? ? ????????. ?????? ???????????? ?????? ?????? ???? ? ????????????? ????? ? ????????????????? ????, ???? ????? ? JSON ??? XML.

????? ????? API ? ??? ?????????????? ???????? ???????

API ????????????? ?????????????? ????? ???????????? ??????????? ??? ????????????? ????? ?? ?????????? ?????????. ?????????? ??????????? API ??? ?????????? ??????? ?????, ???????? ????? ? ???????. ????????? ????????? ?????? ????????? ?????? ?? ????????????????? ?????? ????? API, ? ?? ??????? ??????????? ???? ????????????.

???????? ?????????? ????? API ?????????? ?? ???????? ??????-?????. ?????????? ?????????? ?????????? ?????? ? ?????????? ? ????????? ??????? ? ????????. ?????? ?????????? ?? ?????? ?? ??????????? ??????, ??????????? ????????? ??????. ?????? ???????? ??????, ???????????? ????? ??????? ? ???????????? ??????????.

????? ?????????? ?????? ????????? ????? ? ???????????? ??????????? ??? ?????????? ? ?????????? ????????. ????? ??????????????? ??????? ? ?????????????? ????. ?????????? ?????????? ??????????? ???????? ???????? ??? ????????????? ???????? ????????????.

API ???? ????????? ??????? ???????, ??? ?????? ?????? ????????? ?????? ???????. ?????? ??????????? dragon money ???????? ????????, ???????? ? ???????????? ???????????? ???????????. ??????????? ????????? ????????? ????????? ??????? ??? ??????? ?? ????????? ??????.

??? ????? REST ? ??? ??????? ????????

REST ???????????? ????????????? ??????, ??????????????? ???????? ??????????? ? ???? ??? ???????? ?????????????? ???-????????. ??? ??????? ??????? ????????? REST ? ????? ??????????? ? 2000 ????. ??????????? REST ?????????? ?? ????????????? ????????? ?????????? ? ?????????? ?????????, ?????? ????? HTTP.

REST ?????????? ??????? ??? ??????? ???????? ???????. ?????? ?????? ????? ???????????? ????????????? ? ???? URL. ??????? ????????????? ? ????????? ????? ??????????? ????????, ?? ????????? ?? ?????????? ????????????? ???????. ?????? ????? ???????????? ???????????? ?????????? ? ???????? ????????? ????????????? ??????.

???????? ???????? REST ?????????? ????????? ?????????:

  • ???????????? ?????????? — ??????????????????? ??????? ???????????? ? ????????? ????? HTTP-??????
  • ??????-????????? ??????????? — ?????????? ??????????????? ????? ???????? ? ????????
  • ?????????? ????????? — ?????? ?????? ???????? ??? ??????????? ???????? ??? ?????????
  • ??????????? — ??????????? ?????????? ??????? ??? ????????? ??????????????
  • ???????? ??????? — ??????????? ????? ????????? ????????????? ???? ??? ??????? ?? ???????

?????????? ?????? REST ????????? ????????????? ??????????, ??????????? ? ????? ?????????????? ???-??????? ??? ????????????? ????????.

??????-????????? ??????????? ? ????????????? ??????

??????-????????? ??????????? ????????? ??????? ?? ??? ?????????? ???????? ? ?????????? ?????????????. ?????? ???????? ?? ???????????????? ????????? ? ??????????? ????????. ?????? ???????????? ????????? ??????, ??????-??????? ? ?????????? ????????. ????? ????????????? ?????? ???????????? ????????? ???????? ??????????????.

?????????? ????? ??????????????? ?? ?????? ? ?????????????. ????????? ??????????? ????????, ?????????? ??????? ? ?????????? ?????. ?????? ????? ???? ???-?????????, ????????? ??????????? ??? ?????????? ??????????. ????????? ??????? ??????????????? ? ????? ???????? ????? ?????? API.

????????? ??????? ??????????????? ?? ????????? ??????-?????? ? ???????? ??????????. ?????? ???????????? ?????????? ???????, ????????? ???????, ????????????? ? ?????? ?????? ? ????????? ??????. ???????????????? ???????? ?????? ???????? ???????? ?????? ? ???????????? ??????????????? ??????.

????????????? ??????????????? ???????? ???????????? ???????. ???????????? ???????? ????????? ??? ????????? ????????? ??????. ???????????? ????????? ????? ?? ??????? ??????????? ?? ???? ?????????? ??????????. ????? ?????? ????????? ?????????? ? ????????? ???? ??????.

??????? stateless ? ?????????? ?????????? ?????????

??????? stateless ?????????????, ??? ?????? ?? ?????? ?????????? ? ?????????? ???????? ???????. ?????? ?????? ???????? ??? ????????? ?????????? ??? ??????????. ?????? ?? ??????????? ???????? ?? ??????? ???????????? ??? ???????????? ??????. ???????? ?????? ???????? ?????? ????????? ? ??????????? ??????????.

?????????? ????????? ?? ??????? ????????? ???????? ?? ?????? ? ?????????. ??????? ?? ????????? ???????? ???????? ??? ?????????? ?????? ????????. ??????? ????? ???????????, ???????? ????? ??????? ??? ???????????? ?????????. ????? ?????? ? ???????? ???????????? ?????? ?? ??????? ???????.

?????? ???????????? ?????????? ??????????. ?????? ?????? ???????? ?????? ??????????????, ?????????????? ?????? ? ??????????? ????????. ?????????? ?????????? ?????? ?????? ? ??????? ????????? ???????????? ? ???????? ?? ??? ??????????. ????????????? ???????????? ??????? ??????? ?????????? ? ???????.

Stateless-??????????? ???????? ??????? ? ????????. ?????????? ?????? ???? ????????????? ????? ?????? ?????????? ?? ??????? ????????????. ?????????????? ????? ??????? ??????????? ???????, ????????? ??????? ?? ????? ???????????? ?????????? ?????????.

HTTP-??????: GET, POST, PUT, DELETE

HTTP-?????? ?????????? ??? ????????, ??????? ?????? ????????? ? ???????? ?? ???????. REST API ????????? ??????????? ??????? ????????? HTTP ??? ????????????, ??????????, ??????????? ? ???????? ??????????. ?????? ????? ???????? ????????????? ?????????????? ? ????????.

????? GET ??????? ??? ?????????? ?????? ? ???????. ?????? GET ?? ?????? ????????? ??????? ? ????????? ??????????. ?????? ?????????? GET ??? ????????? ?????? ? ?????????????, ??????? ??? ?????? ?????????. ????????? dragon money ???????????? ? URL-?????? ????? ????? ???????.

????? POST ?????????? ?????? ?????? ?? ???????. ?????? ???????? ?????????? ? ?????????? ???????, ? ?????? ????????? ?????? ? ????????? ??????. POST ??????????? ??? ???????? ?????????????, ???????? ????????? ? ??????? ??? ?????????? ????????????.

????? PUT ???????????? ????????? ?????? ?????????. ?????? ???????? ?????? ????? ?????????? ??? ?????? ???????? ?????????. PUT ????????????? ??? ?????????????? ??????? ???????????? ??? ??????????? ??????????. ???? ?????? ?????? ???? ?? ???????, PUT ????? ???????????? ?????? ??????.

????? DELETE ??????? ?????? ? ???????. ?????? ?????????? ????????????? ???????? ??? ????????.

?????? ???????: URL, ?????? ? ??????????

HTTP-?????? ? REST API ???????????? ?? ???? ?????????, ?????? ?? ??????? ????????? ?????????? ???????. ?????????? ??????????? ??????? ???????????? ?????????? ????????? ?? ????? ??????? ? ?????????? ?????????? ??????????.

URL-????? ?????????? ???????????? ??????? ?? ???????. ????? ???????? ????????, ???????? ???, ??????? ? ??????? ? ?????????????? ????????? ???????. ???? ??? ??????? ???????? ???????? ????????? ? ????????????? ??????????? ???????. ????????? ??????? ?????? ????????? ?????????????? ???????? ?????????? ??? ?????????? ??????????.

?????? ??????? ???????? ?????????? ? ???????????? ??????. ??????? ?????? ???????? ????????????? ??????????:

  • Content-Type — ????????? ?????? ?????????? ? ???? ???????, ???????? application/json
  • Authorization — ???????? ????? ??? ??????????????? ?????? ??? ??????????? ????????????
  • Accept — ?????? ???????????????? ??? ?????? ?? ???????
  • User-Agent — ?????????????? ?????????? ?????????, ?????????? ??????

?????????? ??????? ???????? ??????????, ???????????? ?? ?????? ??? ?????????????? ??????? POST, PUT ??? PATCH. ???????? ? ?????????? ????????????? ???????? ?????????? ? ????????? ???? ???????????. ?????????? ????? ???????? ???????? dragon money ??? ???????? ??????? ????????????, ?????????? ?????? ??? ???????? ????? ?? ??????.

??????? ??????: JSON ? XML

REST API ??????????? ????????????????? ???? ??? ???????? ?????? ????? ???????? ? ????????. ??? ????? ?????????? ??????? — JSON ? XML. ??????? ??????? ?? ???????? ??????? ? ?????????? ? ?????????? ???????????.

JSON, ??? JavaScript Object Notation, ?????????? ?????????? ? ???? ??? ????-????????. ?????? ??????????????? ?????????? ? ????????? ??????????. JSON ???????????? ???????? ???? ??????????: ??????, ?????, ?????? ????????, ??????? ? ???????. ??????????? ?????? ???????????????? ???????? ?????????? ??????????? ??? ?????????????? ? JSON.

????? JSON ???????? ?????????? ?????? ???????????? ??????. ??????? JSON ??????????? ???????, ??? ??????? ???????? ?? ?????????? ??????????. ?????? ????? ? ???????? ??? ???????????. ?????? ???? ?????? ??? ?????????? ???-?????????? ? ????????? ????????.

XML, ??? eXtensible Markup Language, ????????? ??????????? ??????????? ? ???????????? ? ???????????? ??????. ?????? ???????????? ????????, ???????????? ???? ? ????? ?????????. XML ??????????? ??????? ????????? ? ???????? ?????????. ?????? ?????? ???? ???????????? ? ?????????????? ?????????? ? legacy-???????????, ??????????? ??????????? ???????? ??????.

???? ??????? ??????? ? ????????? ??????

?????? ????????????? HTTP-???? ????????? ??? ??????????? ??????? ? ????? ????????? ???????. ???? ????????? ?? ???? ?????, ?????? ????????? ?? ?????????? ??? ??????. ?????????? ????????? ????? ????????? ??????????? ????????? ????????? ??????????? ?? ????????? ????????.

???? ?????? 2xx ????????????? ?? ???????? ????????? ???????. ??? 200 ???????? ??????? ?????????? ????????. ??? 201 ????????? ?? ???????????? ??????? ???????. ??? 204 ???????? ?? ??????? ?????????? ??? ???????? ????????.

???? ?????? 3xx ????????????? ? ??????????. ??? 301 ????????? ?? ???????????? ??????? ???????. ??? 304 ???????????, ??? ?????? ?? ??????????????? ? ??????? ?????????? ???????. ?????? ????? ???????????? ???????????? ????? ??????.

???? ????????? 4xx ?????????? ?????????? ?? ??????? ???????. ??? 400 ?????????? ?? ???????????? ?????? ???????. ??? 401 ??????? ???????????. ??? 403 ????????? ???? ? ???????. ??? 404 ?????????? ?? ?????????? ?????????? ???????.

???? ????????? 5xx ?????????? ?? ????????? ???????. ??? 500 ???????? ?????????? ??????. ??? 503 ??????????? ? ????????? ???????????????????. ?????????? ?????????? ?????? ??????? ???????????? ???? ? ????????????? ???????? ????????? ????????????.