TestMace. Оғози зуд

TestMace. Оғози зуд

Салом ба ҳама. Мо оҳиста-оҳиста аз соя мебароем ва силсилаи мақолаҳоро дар бораи маҳсулотамон идома медиҳем. Баъди қаблӣ мақолаи барраси, мо бисёр фикру мулоҳизаҳо (асосан мусбат), пешниҳодҳо ва гузоришҳои хатогиҳо гирифтем. Имрӯз мо нишон медиҳем TestMace дар амал ва шумо метавонед баъзе аз хусусиятҳои замимаи моро қадр кунед. Барои пурратар гирифтани таъмид, ман ба шумо маслиҳат медиҳам, ки ба ҳуҷҷатҳои мо дар ин ҷо муроҷиат кунед http://docs-ru.testmace.com. Пас, биёед!

параметр

Биёед бо банақдӣ оғоз кунем. Барнома дастрас аст ва воқеан дар се платформа озмуда шудааст - Linux, Windows, MacOS. Шумо метавонед насбкунандаро барои OS, ки ба шумо маъқул аст, зеркашӣ кунед вебсайти мо. Барои корбарони Linux он имконпазир аст, ки насб кунед бастаи фаврӣ. Мо дар ҳақиқат умедворем, ки Дӯкони Microsoft ва Дӯкони Барномаҳо ба зудӣ ба он дастрасӣ пайдо мекунанд (Оё ин зарур аст? Шумо чӣ фикр доред?).

Сенарияи таҷрибавӣ

Мо сенарияи стандартии зеринро ҳамчун мавзӯи санҷиши худ интихоб кардем:

  • Логин: корбар - администратор, парол - парол
  • як вуруди нав илова кунед
  • Биёед тафтиш кунем, ки сабт дуруст илова карда шудааст

Мо озмоиш хоҳем кард https://testmace-quick-start.herokuapp.com/. Ин маъмул аст json-сервер, барои санҷиши чунин барномаҳо комил аст. Мо танҳо ба ҳамаи хатсайрҳои json-сервер иҷозатро тавассути нишона илова кардем ва барои қабули ин нишона усули воридшавӣ сохтем. Мо тадриҷан пеш рафта, лоиҳаи худро тадриҷан такмил медиҳем.

Эҷоди лоиҳа ва кӯшиши эҷоди як объект бидуни иҷозат

Аввалан, биёед лоиҳаи нав эҷод кунем (File->Лоиҳаи нав). Агар шумо барномаро бори аввал оғоз кунед, лоиҳаи нав ба таври худкор кушода мешавад. Аввалан, биёед кӯшиш кунем, ки барои эҷоди сабти нав дархост пешниҳод кунем (агар эҷод кардани сабтҳо бидуни иҷозат дастрас бошад). Аз менюи контекстии гиреҳи лоиҳа ҷузъҳоро интихоб кунед Иловаи гиреҳ -> Қадами дархост. Номи гиреҳро ба эҷод-пост. Дар натиҷа, дар дарахт гиреҳи нав сохта мешавад ва ҷадвал барои ин гиреҳ кушода мешавад. Биёед параметрҳои дархости зеринро муқаррар кунем:

  • Навъи дархост: POST
  • URL: https://testmace-quick-start.herokuapp.com/posts
  • Мақоми дархост: json бо арзиш {"title": "New testmace quick start post"}
    Агар шумо ҳама чизро дуруст иҷро кунед, интерфейс чунин хоҳад буд:

TestMace. Оғози зуд

Аммо, агар мо кӯшиш кунем, ки дархостро иҷро кунем, сервер рамзи 401-ро бармегардонад ва бидуни иҷозат мо дар ин сервер чизе ба даст намеорем. Хуб, дар маҷмӯъ, тавре интизор мерафт).

Илова кардани дархости иҷозатдиҳӣ

Тавре ки аллакай гуфта шуд, мо нуқтаи ниҳоии POST дорем /login, ки json-ро ҳамчун мақоми дархости шакл мегирад: {"username": "<username>", "password": "<password>"}ки дар username и password (боз аз сархати муқаддимавии боло) маъно доранд admin и password мутаносибан. Дар посух, ин нуқтаи ниҳоӣ json монанди бар мегардонад {"token": "<token>"}. Мо онро барои иҷозат истифода хоҳем кард. биёед эҷод кунем Қадами дархост гиреҳ бо ном даромадан, хамчун ниёгон амал мекунад Лоиҳаи гиреҳ Бо истифода аз кашолакунӣ, гиреҳи додашударо дар дарахт аз гиреҳ баландтар интиқол диҳед эҷод-пост. Биёед ба дархости навтаъсис параметрҳои зеринро муқаррар кунем:

Биёед дархостро иҷро кунем ва рамзи дусадумро бо нишона дар ҷавоб гирем. Чизе монанди ин:

TestMace. Оғози зуд

Рефакторинг: бартараф кардани такрори домен

То ҳол дархостҳо ба як скрипт пайваст карда нашудаанд. Аммо ин ягона камбудй нест. Агар шумо бодиққат назар кунед, шумо мебинед, ки ҳадди аққал домен дар ҳарду дархост такрор карда шудааст. Нағз не. Вақти он расидааст, ки ин қисми скрипти ояндаро аз нав дида бароем ва тағирёбандаҳо дар ин ба мо кӯмак хоҳанд кард.

Ба тахмини аввал, тағирёбандаҳо ҳамон нақшро дар дигар абзорҳо ва забонҳои барномасозӣ иҷро мекунанд - рафъи такрорӣ, баланд бардоштани хониш ва ғайра. Шумо метавонед дар бораи тағирёбандаҳо бештар хонед ҳуҷҷатҳои мо. Дар ин ҳолат, мо ба тағирёбандаҳои корбар ниёз дорем.

Биёед тағирёбандаро дар сатҳи гиреҳи лоиҳа муайян кунем domain бо маъно https://testmace-quick-start.herokuapp.com. Барои ин зарур аст

  • Ҷадвалро бо ин гиреҳ кушоед ва тасвири ҳисобкунакро дар тарафи рости боло клик кунед
  • -ро пахш кунед + ИЛОВАИ ТАҒЪЙИРБАНДА
  • Ном ва арзиши тағирёбандаро ворид кунед
    Дар ҳолати мо, муколама бо тағирёбандаи иловашуда чунин хоҳад буд:

TestMace. Оғози зуд

ДУРУСТ. Ҳоло, аз сабаби мерос, мо метавонем ин тағирёбандаро дар наслҳои ҳама гуна сатҳи лона истифода барем. Дар ҳолати мо инҳо гиреҳҳо мебошанд даромадан и эҷод-пост. Барои истифодаи тағирёбанда дар майдони матн, шумо бояд нависед ${<variable_name>}. Масалан, URL-и воридшавӣ ба он табдил дода мешавад ${domain}/login, мутаносибан барои эҷод-пост URL-и гиреҳ чунин хоҳад буд ${domain}/posts.

Ҳамин тариқ, бо назардошти принсипи DRY, мо сенарияро каме беҳтар кардем.

Токенро ба тағирёбанда захира кунед

Азбаски мо дар бораи тағирёбандаҳо гап мезанем, биёед ин мавзӯъро каме васеъ кунем. Дар айни замон, дар сурати бомуваффақият ворид шудан, мо аз сервер аломати авторизатсия мегирем, ки дар дархостҳои минбаъда ба мо лозим мешавад. Биёед ин нишонаро ба тағирёбанда захира кунем. Зеро арзиши тағирёбанда ҳангоми иҷрои скрипт муайян карда мешавад, мо барои ин механизми махсусро истифода мебарем - тағирёбандаҳои динамикӣ.

Аввалан, биёед дархости воридшавӣ иҷро кунем. Дар ҷадвал Таҳлил ҷавоб диҳед, курсорро ба болои нишона ҳаракат кунед ва дар менюи контекстӣ (ки бо тугмаи рости муш ё бо пахш кардани тугма ... номида мешавад) банди интихобшударо интихоб кунед. Ба тағирёбанда таъин кунед. Муколама бо майдонҳои зерин пайдо мешавад:

  • Роҳ — кадом қисми ҷавоб гирифта шудааст (дар ҳолати мо body.token)
  • Арзиши ҷорӣ - кадом арзиш дар қад-қади Роҳ ҷойгир аст (дар ҳолати мо ин арзиши аломат аст)
  • Номаълум аст — номи тағирёбанда дар куҷо Арзиши ҷорӣ ҳифз карда мешавад. Дар мавриди мо чунин мешавад token
  • Нод — дар кадоме аз аҷдодҳо тағйирёбанда эҷод мешавад Номаълум аст. Биёед лоиҳаро интихоб кунем

Муколамаи анҷомшуда чунин менамояд:

TestMace. Оғози зуд

Акнун ҳар дафъае, ки гиреҳ иҷро карда мешавад даромадан тағирёбандаи динамикӣ token бо арзиши нав аз ҷавоб нав карда мешавад. Ва ин тағирёбанда дар он нигоҳ дошта мешавад Лоиҳаи гиреҳ ва ба шарофати мерос ба наслҳо дастрас хоҳанд шуд.

Барои дастрасӣ ба тағирёбандаҳои динамикӣ, шумо бояд истифода баред тағирёбандаи дарунсохт $dynamicVar. Масалан, барои дастрасӣ ба нишонаи захирашуда, шумо бояд занг занед ${$dynamicVar.token}.

Мо аломати иҷозатро ба дархостҳо мегузорем

Дар қадамҳои қаблӣ мо аломати иҷозатро гирифтем ва танҳо як сарлавҳа илова кардан лозим аст Authorization бо маъно Bearer <tokenValue> дар ҳама дархостҳое, ки иҷозат талаб мекунанд, аз ҷумла эҷод-пост. Якчанд роҳҳо барои ин кор вуҷуд доранд:

  1. Токенро дастӣ нусхабардорӣ кунед ва ба дархостҳои таваҷҷӯҳ сарлавҳаи иҷозатро илова кунед. Ин усул кор мекунад, аммо истифодаи он танҳо бо дархостҳои навъи "сохта ва партофташуда" маҳдуд аст. Барои иҷрои такрории скриптҳо мувофиқ нест
  2. Функсияро истифода баред иҷозат.
  3. Барои истифода сарлавҳаҳои пешфарз

Истифодаи усули дувум ба назар равшан ба назар мерасад, аммо дар заминаи ин мақола ин равиш... ҷолиб нест. Хуб, дар ҳақиқат: механизми иҷозатдиҳӣ плюс минус барои шумо аз асбобҳои дигар шинос аст (ҳатто агар мо чизҳои монанди мероси иҷозат) ва гумон аст, ки саволҳо ба миён ояд.

Чизи дигар сарлавҳаҳои пешфарз аст! Хулоса, сарлавҳаҳои пешфарз сарлавҳаҳои меросии HTTP мебошанд, ки ба дархост бо нобаёнӣ илова карда мешаванд, агар ба таври возеҳ ғайрифаъол карда шаванд. Бо истифода аз ин функсия, шумо метавонед, масалан, иҷозати фармоиширо амалӣ кунед ё танҳо аз такрори скриптҳо халос шавед. Биёед ин хусусиятро истифода барем, то ки дар сарлавҳаҳо гузарад.

Пештар, мо боэҳтиёт нишонаро ба тағирёбандаи динамикӣ захира мекардем $dynamicVar.token дар сатҳи гиреҳи лоиҳа. Танҳо иҷрои амалҳои зерин боқӣ мемонад:

  1. Унвони пешфарзро муайян кунед Authorization бо маъно Bearer ${$dynamicVar.token} дар сатҳи гиреҳи лоиҳа. Барои ин, дар интерфейси лоиҳаи гиреҳ шумо бояд муколамаро бо сарлавҳаҳои пешфарз кушоед (тугмаи сарлавҳаҳои дар кунҷи рости боло) ва сарлавҳаи мувофиқро илова кунед. Муколама бо арзишҳои пуршуда чунин хоҳад буд:
    TestMace. Оғози зуд
  2. Ин сарлавҳаро аз дархости воридшавӣ ғайрифаъол кунед. Ин фаҳмо аст: ҳангоми ворид шудан, мо токен надорем ва мо онро бо ин дархост насб мекунем. Аз ин рӯ, дар интерфейси воридшавии дархост дар ҷадвал сарлавҳаҳои дар вилоят Мерос сарлавҳаи Авторизатсияро хориҷ кунед.

Ҳамааш ҳамин. Акнун сарлавҳаи иҷозат ба ҳамаи дархостҳое, ки кӯдакони гиреҳи Лоиҳа мебошанд, ба истиснои гиреҳи воридшавӣ илова карда мешавад. Маълум мешавад, ки дар ин марҳала мо аллакай як скрипт омода ҳастем ва танҳо ба кор андохтани он аст. Шумо метавонед скриптро тавассути интихоб иҷро кунед давидан дар менюи контексти гиреҳи лоиҳа.

Санҷиши дурустии эҷоди пост

Дар ин марҳила, скрипти мо метавонад ворид шавад ва бо истифода аз аломати авторизатсия пост эҷод кунад. Аммо, мо бояд боварӣ ҳосил кунем, ки пости навтаъсис номи дуруст дорад. Яъне, аслан танҳо иҷрои ин кор боқӣ мемонад:

  • Барои гирифтани паём аз рӯи ID дархост ирсол кунед,
  • Тафтиш кунед, ки номи аз сервер гирифташуда ба номе, ки ҳангоми эҷоди паём фиристода шудааст, мувофиқат мекунад

Биёед ба қадами аввал назар андозем. Азбаски арзиши id ҳангоми иҷрои скрипт муайян карда мешавад, шумо бояд тағирёбандаи динамикӣ эҷод кунед (биёед онро даъват кунем postId) аз гиреҳ эҷод-пост дар сатҳи гиреҳи лоиҳа. Мо аллакай медонем, ки чӣ тавр ин корро кардан лозим аст, танҳо ба бахш муроҷиат кунед Токенро ба тағирёбанда захира кунед. Танҳо эҷод кардани дархост барои гирифтани паём бо истифода аз ин ID боқӣ мемонад. Барои ин, биёед як RequestStep эҷод кунем гирифтани пост бо параметрҳои зерин:

  • Навъи дархост: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Барои ба амал баровардани кадами дуюм мо бояд бо он шинос шавем Тасдиқ гиреҳ. Гиреҳи тасдиқ гиреҳест, ки ба шумо имкон медиҳад чекҳоро барои дархостҳои мушаххас нависед. Ҳар як гиреҳи тасдиқ метавонад якчанд тасдиқҳоро (санҷишҳо) дар бар гирад. Шумо метавонед маълумоти бештарро дар бораи ҳама намуди тасдиқҳо аз мо бихонед хуччатхо. истифода мебарем Compare тасдиқ бо оператор equal. Якчанд роҳҳо барои эҷоди изҳорот вуҷуд доранд:

  1. дароз. Аз менюи контексти гиреҳи RequestStep гиреҳи тасдиқро дастӣ эҷод кунед. Дар гиреҳи тасдиқи сохташуда тасдиқи таваҷҷӯҳро илова кунед ва майдонҳоро пур кунед.
  2. Тез. Бо истифода аз менюи контекстӣ гиреҳи тасдиқро дар якҷоягӣ бо тасдиқ аз посухи гиреҳи RequestStep созед

Биёед усули дуюмро истифода барем. Ин барои парвандаи мо чунин хоҳад буд.

TestMace. Оғози зуд

Барои онҳое, ки намефаҳманд, ин аст он чизе ки рӯй медиҳад:

  1. Дар гиреҳ дархост кунед гирифтани пост
  2. Дар ҷадвал Таҳлил ҷавоб диҳед, ба менюи контекстӣ занг занед ва интихоб кунед Эҷоди изҳорот -> муқоиса кунед -> баробар

Табрикот, мо озмоиши аввалини худро таъсис додем! Содда, ҳамин тавр не? Акнун шумо метавонед скриптро пурра иҷро кунед ва аз натиҷа лаззат баред. Танҳо он чизе боқӣ мемонад, ки онро каме ислоҳ кунед ва онро берун кунед title ба як тағирёбандаи алоҳида. Аммо мо инро барои шумо ҳамчун вазифаи хонагӣ мегузорем)

хулоса

Дар ин дастур, мо як сенарияи мукаммалро таҳия кардем ва ҳамзамон баъзе хусусиятҳои маҳсулотамонро баррасӣ кардем. Албатта, мо тамоми функсияҳоро истифода набурдем ва дар мақолаҳои минбаъда мо шарҳи муфассали имкониятҳои TestMace-ро пешниҳод хоҳем кард. Гӯш ба занг бош!

PS Барои онҳое, ки барои такрори ҳама қадамҳо танбал ҳастанд, мо бо меҳрубонӣ сабт кардем анбор бо лоиха аз макола. Шумо метавонед онро бо File -> Лоиҳаи кушода ва ҷузвдони лоиҳаро интихоб кунед.

Манбаъ: will.com

Илова Эзоҳ