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