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