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

by Kirk J. Slater

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

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


Comments are closed.