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