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

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

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