ืฉืืื ืืืืื. ืืื ืืื ืื ืื ื ืืืฆืืื ืืืฆืืืื ืืืืฉืืืื ืืกืืจืช ืืืชืืืช ืขื ืืืืฆืจ ืฉืื ื. ืืืืจ
ืืชืงื ื
ื ืชืืื ืืืื ืืืืืช. ืืืคืืืงืฆืื ืืืื ื ืืืืขืฉื ื ืืืงื ืืฉืืืฉ ืคืืืคืืจืืืช - ืืื ืืงืก, ืืืื ืืช, MacOS. ืืชื ืืืื ืืืืจืื ืืช ืชืืื ืืช ืืืชืงื ื ืขืืืจ ืืขืจืืช ืืืคืขืื ืฉืืื ื ืืชื ืืขืื ืืื
ืชืจืืืฉ ื ืืกืืื ื
ืืืจื ื ืืชืจืืืฉ ืืกืื ืืจืื ืืื ืื ืืฉื ืืืืื ืฉืื ื:
- ืื ืืกื: ืืฉืชืืฉ - ืืืืื, ืกืืกืื - ืกืืกืื
- ืืืกืฃ ืขืจื ืืืฉ
- ืืืื ื ืืืืง ืฉืืจืฉืืื ื ืืกืคื ืืืืื
ื ืืื ืขื
ืืฆืืจืช ืคืจืืืงื ืื ืืกืืื ืืืฆืืจ ืืฉืืช ืืื ืืจืฉืื
ืจืืฉืืช, ืืืื ื ืืฆืืจ ืคืจืืืงื ืืืฉ (ืฉืื->ืคืจืืืืงื ืืืฉ). ืื ืืชื ืืคืขืื ืืช ืืืคืืืงืฆืื ืืคืขื ืืจืืฉืื ื, ืคืจืืืงื ืืืฉ ืืืคืชื ืืืืืืืืช. ืจืืฉืืช, ืืืื ื ื ืกื ืืืืืฉ ืืงืฉื ืืืฆืืจืช ืจืฉืืื ืืืฉื (ืืืงืจื ืฉืืฆืืจืช ืจืฉืืืืช ืืืื ื ืืื ืืืฉืืจ). ืืืจ ืคืจืืืื ืืชืคืจืื ืืืงืฉืจ ืฉื ืฆืืืช ืืคืจืืืงื ืืืกืฃ ืฆืืืช -> RequestStep. ืืืืจ ืืช ืฉื ืืฆืืืช ื ืืืฆืืจ-ืคืืกื. ืืชืืฆืื ืืื, ืืืืฆืจ ืฆืืืช ืืืฉ ืืขืฅ ืืชืืคืชื ืืจืืืกืืื ืขืืืจ ืฆืืืช ืื. ืืืื ื ืืืืจ ืืช ืคืจืืืจื ืืืงืฉื ืืืืื:
- ืกืื ืืืงืฉื: POST
- url:
https://testmace-quick-start.herokuapp.com/posts - ืืืฃ ืืืงืฉื: json ืขื ืขืจื
{"title": "New testmace quick start post"}
ืื ืขืฉืืช ืืื ื ืืื, ืืืืฉืง ืืืจืื ืื:
ืขื ืืืช, ืื ื ื ืกื ืืืื ืืช ืืืงืฉื, ืืฉืจืช ืืืืืจ ืงืื 401 ืืืื ืืจืฉืื ืื ื ืงืื ืฉืื ืืืจ ืืฉืจืช ืืื. ืืืื, ืืืืคื ืืืื, ืืฆืคืื).
ืืืกืคืช ืืงืฉืช ืืจืฉืื
ืืคื ืฉืืืจ ื ืืืจ, ืืฉ ืื ื ื ืงืืืช ืงืฆื ืฉื POST /login
, ืฉืืืงื ืืช json ืืืืฃ ืืืงืฉื ืฉื ืืืืคืก: {"username": "<username>", "password": "<password>"}
ืืืคื username
ะธ password
(ืฉืื, ืืคืกืงืช ืืืืื ืืขืื) ืืฉ ืืฉืืขืืืืช admin
ะธ password
ืืืชืืื. ืืชืืืื, ื ืงืืืช ืงืฆื ืื ืืืืืจื json like {"token": "<token>"}
. ื ืฉืชืืฉ ืื ืืฆืืจื ืืืฉืืจ. ืืืื ืืืฆืืจ RequestStep ืฆืืืช ืขื ืฉื ืืชืืืจ, ืืคืขื ืืื ืงืืืื ืคืจืืืงื ืฆืึนืึถืช ืืืืฆืขืืช ืืจืืจื ืืฉืืจืืจ, ืืื ืฆืืืช ื ืชืื ืืขืฅ ืืืื ืืืชืจ ืืืฆืืืช ืืืฆืืจ-ืคืืกื. ืืืื ื ืืืืจ ืืช ืืคืจืืืจืื ืืืืื ืืืงืฉื ืืืืฉื ืฉื ืืฆืจื:
- ืกืื ืืืงืฉื: POST
- url:
https://testmace-quick-start.herokuapp.com/login - ืืืฃ ืืืงืฉื: json ืขื ืขืจื
{"username": "admin", "password": "password"}
ืืื ื ืืฆืข ืืช ืืืงืฉื ืื ืงืื ืืช ืืงืื ืืืืชืืื ืขื ืืืกืืืื ืืชืืืื. ืืฉืื ืืื:
Refactoring: ืืกืจืช ืืคืืืืช ืชืืื
ืขื ืื ืืืงืฉืืช ืืื ื ืืงืืฉืจืืช ืืกืงืจืืคื ืืื. ืืื ืื ืื ืืืืกืจืื ืืืืื. ืื ืชืกืชืืื ืืืื, ืชืืืื ื ืฉืืคืืืช ืืืืืืื ืืฉืืืคื ืืฉืชื ืืืงืฉืืช. ืื ืืื. ืืืืข ืืืื ืืฉืืืจ ืืช ืืืืง ืืื ืฉื ืืชืกืจืื ืืขืชืืื, ืืืฉืชื ืื ืืขืืจื ืื ื ืืื.
ืืงืืจืื ืจืืฉืื, ืืฉืชื ืื ืืืืืื ืืช ืืืชื ืชืคืงืื ืืื ืืืืื ืืืืื ืืฉืคืืช ืชืื ืืช ืืืจืืช - ืืืืื ืืคืืืืช, ืืืืจืช ืืงืจืืืืช ืืื'. ืชืืื ืืงืจืื ืขืื ืขื ืืฉืชื ืื ื
ืืืื ื ืืืืจ ืืฉืชื ื ืืจืืช ืฆืืืช ืืคืจืืืงื domain
ืขื ืืฉืืขืืช https://testmace-quick-start.herokuapp.com
. ืืฉื ืื ืืฉ ืฆืืจื
- ืคืชื ืืช ืืืจืืืกืืื ืขื ืืฆืืืช ืืื ืืืืฅ ืขื ืกืื ืืืืฉืืื ืืคืื ื ืืฉืืืืืช ืืขืืืื ื
- ืืืฅ ืขื + ืืืกืฃ ืืฉืชื ื
- ืืื ืฉื ืืขืจื ืฉื ืืฉืชื ื
ืืืงืจื ืฉืื ื, ืชืืืช ืืื-ืฉืื ืขื ืืืฉืชื ื ืฉื ืืกืฃ ืืืจืื ืื:
ืืกืืจ. ืืขืช, ืขืงื ืชืืจืฉื, ืื ื ืืืืืื ืืืฉืชืืฉ ืืืฉืชื ื ืื ืืฆืืฆืืื ืืื ืจืืช ืงืื ืื. ืืืงืจื ืฉืื ื ืืื ืฆืืชืื ืืชืืืจ ะธ ืืืฆืืจ-ืคืืกื. ืขื ืื ืช ืืืฉืชืืฉ ืืืฉืชื ื ืืฉืื ืืงืกื, ืขืืื ืืืชืื ${<variable_name>}
. ืืืืืื, ืืชืืืช ืืืชืจ ืืื ืืกื ืืืืจืช ื ${domain}/login
, ืืืชืืื ืขืืืจ ืืืฆืืจ-ืคืืกื ืืชืืืช ืืืชืจ ืฉื ืืฆืืืช ืชืืจืื ${domain}/posts
.
ืืคืืื, ืืื ืืืืช ืขืงืจืื ื- DRY, ืฉืืคืจื ื ืืขื ืืช ืืชืจืืืฉ.
ืฉืืืจ ืืช ืืืกืืืื ืืืฉืชื ื
ืืืืืื ืฉืื ื ืืืืจืื ืขื ืืฉืชื ืื, ืืืื ื ืจืืื ืืขื ืื ืืฉื ืื. ืืจืืข, ืืืงืจื ืฉื ืื ืืกื ืืืฆืืืช, ืื ื ืืงืืืื ืืืฉืจืช ืืกืืืื ืืจืฉืื, ืืืชื ื ืืืงืง ืืืงืฉืืช ืืืืืช. ืืืื ื ืฉืืืจ ืืช ืืืกืืืื ืืื ืืืฉืชื ื. ืื ืืขืจื ืฉื ืืืฉืชื ื ืืืงืืข ืืืืื ืืืฆืืข ืืกืงืจืืคื, ืื ื ืืฉืชืืฉืื ืืื ืื ืื ืืืืื ืืฉื ืื -
ืจืืฉืืช, ืืืื ื ืืฆืข ืืงืฉืช ืืชืืืจืืช. ืืืจืืืกืืื ืื ืืชื ืขื ื, ืืขืืจ ืืช ืืกืื ืืขื ืืืกืืืื ืืืชืคืจืื ืืืงืฉืจ (ืฉื ืงืจื ืื ืืืืฆืขืืช ืืืฆื ืืขืืืจ ืืืื ื ืื ืขื ืืื ืืืืฆื ืขื ืืืคืชืืจ ...) ืืืจ ืืช ืืคืจืื ืืงืฆื ืืืฉืชื ื. ืชืืคืืข ืชืืืช ืื-ืฉืื ืขื ืืฉืืืช ืืืืื:
- ื ืชืื - ืืืื ืืืง ืืืชืฉืืื ื ืืงื (ืืืงืจื ืฉืื ื ืื ืื
body.token
) - ืขืจื ื ืืืื - ืืืื ืขืจื ืืฉ ืืืืจื ืื ืชืื (ืืืงืจื ืฉืื ื ืื ืืขืจื ืืกืื)
- ืฉื ืืฉืชื ื - ืฉื ืืืฉืชื ื ืืืคื ืขืจื ื ืืืื ืืืฉืืจ. ืืืงืจื ืฉืื ื ืื ืืืื
token
- ืฆืืืช - ืืืืื ืืืืืืช ืืงืืืื ืื ืืืืฆืจ ืืืฉืชื ื ืฉื ืืฉืชื ื. ืืื ื ืืืจ ืคืจืืืงื
ืชืืืช ืืื-ืฉืื ืฉืืืฉืืื ื ืจืืืช ืื:
ืขืืฉืื ืืื ืคืขื ืฉืืฆืืืช ืืืืฆืข ืืชืืืจ ืืฉืชื ื ืืื ืื token
ืืขืืืื ืืขืจื ืืืืฉ ืืืชืืืื. ืืืืฉืชื ื ืืื ืืืืืกื ื ืคืจืืืงื ืฆืืืช, ืืืืืืช ืืืจืืฉื, ืืืื ืืืื ืืฆืืฆืืื.
ืืื ืืืฉืช ืืืฉืชื ืื ืืื ืืืื, ืขืืื ืืืฉืชืืฉ $dynamicVar
. ืืืืืื, ืืื ืืืฉืช ืืืกืืืื ืืืืืกื, ืขืืื ืืืชืงืฉืจ ${$dynamicVar.token}
.
ืื ื ืืขืืืจืื ืืช ืืกืืืื ืืืจืฉืื ืืืงืฉืืช
ืืฉืืืื ืืงืืืืื ืงืืืื ื ืืช ืืกืืืื ืืืจืฉืื ืืื ืื ืฉืื ืื ื ืฆืจืืืื ืืขืฉืืช ืืื ืืืืกืืฃ ืืืชืจืช Authorization
ืขื ืืฉืืขืืช Bearer <tokenValue>
ืืื ืืืงืฉืืช ืืืืจืฉืืช ืืืฉืืจ, ืืืื ืืืฆืืจ-ืคืืกื. ืืฉื ื ืืกืคืจ ืืจืืื ืืขืฉืืช ืืืช:
- ืืขืชืง ืืืืคื ืืื ื ืืช ืืืกืืืื ืืืืกืฃ ืืืชืจืช ืืจืฉืื ืืืงืฉืืช ืืขื ืืื. ืืฉืืื ืขืืืืช, ืื ืืฉืืืืฉ ืื ืืืืื ืจืง ืืืงืฉืืช ืืกืื "ืขืฉื ืื ืืจืง". ืื ืืชืืื ืืืืฆืืข ืืืืจ ืฉื ืกืงืจืืคืืื
- ืืฉืชืืฉ ืืคืื ืงืฆืืื ืืืืช
ืืจืฉืื . - ืืืฉืชืืฉ
ืืืชืจืืช ืืจืืจืช ืืืื
ืืฉืืืืฉ ืืฉืืื ืืฉื ืืื ื ืจืื ืืืื ืืืืื, ืื ืืืงืฉืจ ืฉื ืืืืจ ืื, ืืืฉื ืื ืืื... ืื ืืขื ืืื ืช. ื ื, ืืืืช: ืื ืื ืื ืืืจืฉืื ืคืืืก ืืื ืืก ืืืืจ ืืื ืืืืื ืืืจืื (ืื ืื ืืฉ ืื ื ืืืจืื ืืื
ืืืจ ื ืืกืฃ ืืื ืืืชืจืืช ืืจืืจืช ืืืืื! ืืงืฆืจื, ืืืชืจืืช ืืจืืจืช ืืืืื ืื ืืืชืจืืช HTTP ืฉืขืืจื ืืืจืืฉื ืฉืืชืืืกืคืืช ืืืงืฉื ืืืจืืจืช ืืืื, ืืื ืื ืื ืืืฉืืชืืช ืืืคืืจืฉ. ืืืืฆืขืืช ืคืื ืงืฆืืื ืืืืช ืื, ืืชื ืืืื, ืืืฉื, ืืืืฉื ืืจืฉืื ืืืชืืืช ืืืฉืืช ืื ืคืฉืื ืืืืคืืจ ืืฉืืคืื ืืกืงืจืืคืืื. ืืืื ื ืฉืชืืฉ ืืชืืื ื ืื ืืื ืืืขืืืจ ืืกืืืื ืืืืชืจืืช.
ืืขืืจ, ืฉืืจื ื ืืืืืจืืช ืืช ืืืกืืืื ืืืฉืชื ื ืืื ืื $dynamicVar.token
ืืจืืช ืฆืืืช ืืคืจืืืงื. ืื ืื ืฉื ืืชืจ ืืื ืืขืฉืืช ืืช ืืืืจืื ืืืืื:
- ืืืืจ ืืืชืจืช ืืจืืจืช ืืืื
Authorization
ืขื ืืฉืืขืืชBearer ${$dynamicVar.token}
ืืจืืช ืฆืืืช ืืคืจืืืงื. ืืฉื ืื, ืืืืฉืง ืืคืจืืืงื ืฉื ืืฆืืืช ืขืืื ืืคืชืื ืื-ืฉืื ืขื ืืืชืจืืช ืืจืืจืช ืืืื (ืืคืชืืจ ืืืชืจืืช ืืคืื ื ืืืื ืืช ืืขืืืื ื) ืืืืกืืคื ืืืชืจืช ืืชืืืื. ืชืืืช ืืื-ืฉืื ืขื ืืขืจืืื ืืืืืื ืชืืจืื ืื:
- ืืฉืืช ืืช ืืืืชืจืช ืืื ืืืงืฉืช ืืืชืืืจืืช. ืื ืืืื: ืืืื ืืื ืืกื, ืขืืืื ืืื ืื ื ืืกืืืื ืืื ื ื ืชืงืื ืืืชื ืขื ืืงืฉื ืื. ืืื, ืืืืฉืง ืืื ืืกื ืฉื ืืืงืฉื ืืืฉืื ืืช ืืืชืจืืช ืืืืืจ ืืืจืืฉื ืืื ืืช ืืกืืืื ืืืืชืจืช ืืืจืฉืื.
ืื ืืื. ืืขืช ืืืชืจืช ืืืจืฉืื ืชืชืืืกืฃ ืืื ืืืงืฉืืช ืฉืื ืืืืื ืฉื ืฆืืืช ืืคืจืืืงื, ืืืื ืฆืืืช ืืื ืืกื. ืืกืชืืจ ืฉืืฉืื ืืื ืืืจ ืืฉ ืื ื ืชืกืจืื ืืืื ืืื ืื ืฉืื ืื ื ืฆืจืืืื ืืขืฉืืช ืื ืืืฉืืง ืืืชื. ืืชื ืืืื ืืืคืขืื ืืช ืืกืงืจืืคื ืขื ืืื ืืืืจื ืืคืขืื ืืชืคืจืื ืืืงืฉืจ ืฉื ืฆืืืช ืืคืจืืืงื.
ืืืืงืช ื ืืื ืืช ืืฆืืจืช ืืคืืกื
ืืฉืื ืื, ืืกืงืจืืคื ืฉืื ื ืืืื ืืืืื ืก ืืืืฆืืจ ืคืืกื ืืืืฆืขืืช ืืกืืืื ืืจืฉืื. ืขื ืืืช, ืขืืื ื ืืืืื ืฉืืคืืกื ืืืืฉ ืฉื ืืฆืจ ืืฉ ืืช ืืฉื ืื ืืื. ืืืืืจ, ืืขืฆื, ืื ืื ืฉื ืืชืจ ืืื ืืขืฉืืช ืืช ืืืืจืื ืืืืื:
- ืฉืื ืืงืฉื ืืงืืืช ืคืืกื ืืืืฆืขืืช ืชืขืืืช ืืืืช,
- ืืืงื ืฉืืฉื ืฉืืชืงืื ืืืฉืจืช ืชืืื ืืช ืืฉื ืฉื ืฉืื ืืขืช ืืฆืืจืช ืืคืืกื
ืืืื ื ืกืชืื ืขื ืืฆืขื ืืจืืฉืื. ืืืืืื ืฉืขืจื ืืืืื ื ืงืืข ืืืืื ืืืฆืืข ืกืงืจืืคื, ืขืืื ืืืฆืืจ ืืฉืชื ื ืืื ืื (ืืืื ื ืงืจื ืืื postId
) ืืืฆืืืช ืืืฆืืจ-ืคืืกื ืืจืืช ืฆืืืช ืืคืจืืืงื. ืื ืื ื ืืืจ ืืืืขืื ืืื ืืขืฉืืช ืืืช, ืคืฉืื ืขืืื ืืกืขืืฃ ืฉืืืจ ืืช ืืืกืืืื ืืืฉืชื ื. ืื ืื ืฉื ืืชืจ ืืื ืืืฆืืจ ืืงืฉื ืืงืื ืคืืกื ืืืืฆืขืืช ืืืืื ืืื. ืืฉื ืื, ืืืื ื ืืฆืืจ RequestStep ืืงืื ืคืืกื ืขื ืืคืจืืืจืื ืืืืื:
- ืกืื ืืืงืฉื: GET
- ืืชืืืช ืืชืจ: ${domain}/posts/${$dynamicVar.postId}
ืืื ืืืืฉื ืืช ืืฉืื ืืฉื ื, ืขืืื ื ืืืืืจ Compare
ืืขื ื ืขื ืืคืขืื equal
. ืืฉื ื ืืกืคืจ ืืจืืื ืืืฆืืจ ืืฆืืจืืช:
- ืืจืื. ืฆืืจ ืืืืคื ืืื ื ืฆืืืช Assertion ืืชืคืจืื ืืืงืฉืจ ืฉื ืืฆืืืช RequestStep. ืืฆืืืช ื-Assertion ืฉื ืืฆืจ, ืืืกืฃ ืืช ืืฆืืจืช ืืขื ืืื ืืืื ืืช ืืฉืืืช.
- ืึธืึดืืจ. ืฆืืจ ืฆืืืช Assertion ืืื ืขื ืืขื ื ืืชืืืืช ืืฆืืืช RequestStep ืืืืฆืขืืช ืชืคืจืื ืืืงืฉืจ
ืืืื ื ืฉืชืืฉ ืืฉืืื ืืฉื ืืื. ืื ืื ืืืจืื ืืืงืจื ืฉืื ื.
ืืื ืฉืื ืืืื, ืื ืื ืฉืงืืจื:
- ืืฆืข ืืงืฉื ืืฆืืืช ืืงืื ืคืืกื
- ืืืจืืืกืืื ืื ืืชื ืขื ื, ืืชืงืฉืจ ืืชืคืจืื ืืืงืฉืจ ืืืืจ ืฆืืจ ืืขื ื -> ืึฐืึทืฉืึฐืืึนืช -> ืฉืืื
ืืื ืืื, ืืฆืจื ื ืืช ืืืืื ืืจืืฉืื ืฉืื ื! ืคืฉืื, ืื? ืืขืช ืชืืืื ืืืจืืฅ ืืช ืืกืงืจืืคื ืืืืืื ืืืืื ืืช ืืืชืืฆืื. ืื ืื ืฉื ืืชืจ ืืื ืืฉืืืจ ืืืชื ืืขื ืืืืืฆืื ืืืชื title
ืืืฉืชื ื ื ืคืจื. ืืื ื ืฉืืืจ ืืช ืื ืืฉืืืื ืืฉืืขืืจื ืืืช)
ืืกืงื ื
ืืืืจืื ืื ืืฆืจื ื ืชืจืืืฉ ืืื ืืืืงืืื ืกืงืจื ื ืืื ืืืชืืื ืืช ืฉื ืืืืฆืจ ืฉืื ื. ืืืืื ืฉืื ืืฉืชืืฉื ื ืืื ืืคืื ืงืฆืืื ืืืืช ืืืืชืืืช ืืืืืช ื ืกืคืง ืกืงืืจื ืืคืืจืืช ืฉื ืืืืืืืช ืฉื TestMace. ืืืฉื ืืขืงืื!
ื .ื ืืื ืฉืืชืขืฆื ืืฉืืืจ ืืช ืื ืืฉืืืื, ืืงืืื ื ืืืืืืืช
ืืงืืจ: www.habr.com