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