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