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