Trakas formas. Atbildes objekta apraksts Skaitļi slīdņa veidā

Pēc pieprasījuma ziņojuma saņemšanas un interpretācijas serveris atbild ar HTTP atbildes ziņojumu:

  • Statusa līnija
  • Nulle vai vairāk galvenes (General|Response|Entity) lauki, kam seko CRLF
  • Tukša rindiņa (t.i., rinda, kurā pirms CRLF nav nekā), kas norāda galvenes lauku beigas
  • Pēc izvēles ziņojuma pamatteksts
  • Katrā nākamajās sadaļās ir izskaidrotas HTTP atbildes ziņojumā izmantotās entītijas.

    Ziņojuma statusa līnija

    Statusa rinda sastāv no protokola versijas, kam seko ciparu statusa kods un ar to saistītā teksta frāze. Elementi ir atdalīti ar atstarpes SP rakstzīmēm.

Statusa rinda = HTTP versija SP statusa kods SP iemesls frāze CRLF HTTP versija

Serveris, kas atbalsta HTTP versiju 1.1, atgriezīs šādu informāciju par versiju:

HTTP versija = HTTP/1.1

Statusa kods

Statusa koda elements ir 3 ciparu vesels skaitlis, kur pirmais statusa koda cipars nosaka atbildes klasi, bet pēdējiem diviem cipariem nav nekādas kategorizēšanas nozīmes. Pirmajam ciparam ir 5 vērtības:

S.N. Kods un apraksts
1 1xx: informatīvs

Tas nozīmē, ka pieprasījums ir saņemts un process turpinās.

2 2xx: veiksme

Tas nozīmē, ka darbība tika veiksmīgi saņemta, saprasta un pieņemta.

3 3xx: novirzīšana

Tas nozīmē, ka ir jāveic turpmākas darbības, lai pieprasījumu izpildītu.

4 4xx: klienta kļūda

Tas nozīmē, ka pieprasījumā ir nepareiza sintakse vai to nevar izpildīt.

5 5xx: servera kļūda

Tas nozīmē, ka serveris neizpildīja šķietami derīgu pieprasījumu.

HTTP statusa kodi ir paplašināmi, un HTTP lietojumprogrammām nav nepieciešams saprast visu reģistrēto statusa kodu nozīmi. Visu statusu kodu saraksts jūsu uzziņai ir sniegts atsevišķā nodaļā.

Atbildes galvenes lauki

Mēs pētīsim vispārīgo galveni un entītiju galveni atsevišķā nodaļā, kad apgūsim HTTP galvenes laukus. Pagaidām pārbaudīsim, kas ir atbildes galvenes lauki.

Atbildes galvenes lauki ļauj serverim nodot papildu informāciju par atbildi, kuru nevar ievietot statusa rindā. Šie galvenes lauki sniedz informāciju par serveri un par turpmāku piekļuvi resursam, kas identificēts ar Request-URI.

  • Starpniekservera autentifikācija

  • WWW-Autentifikācija

Varat ieviest savus pielāgotos laukus, ja plānojat rakstīt savu pielāgoto tīmekļa klientu un serveri.

Atbildes ziņojuma piemēri

Tagad saliksim to visu kopā, lai izveidotu HTTP atbildi uz pieprasījumu ienest hello.htm lapu no tīmekļa servera, kas darbojas vietnē

HTTP/1.1 200 OK Datums: Pirmdiena, 2009. gada 27. jūlijs 12:28:53 GMT Serveris: Apache/2.2.14 (Win32) Pēdējoreiz modificēts: trešdien, 2009. gada 22. jūlijā 19:15:56 GMT Satura garums: 88 Saturs- Tips: text/html Savienojums: Slēgts Sveiki, pasaule!

Šajā piemērā ir parādīts HTTP atbildes ziņojums, kas parāda kļūdas stāvokli, kad tīmekļa serveris nevarēja atrast pieprasīto lapu:

HTTP/1.1 404 nav atrasts datums: svētdiena, 18. oktobris 2012 10:36:20 GMT Serveris: Apache/2.2.14 (Win32) Satura garums: 230 Savienojums: Slēgts satura veids: teksts/html; charset=iso-8859-1 404 Nav atrasts Nav atrasts

Pieprasītais URL /t.html šajā serverī netika atrasts.

Šis ir HTTP atbildes ziņojuma piemērs, kas parāda kļūdas stāvokli, kad tīmekļa serveris konkrētajā HTTP pieprasījumā saskārās ar nepareizu HTTP versiju:

HTTP/1.1 400 Slikta pieprasījuma datums: svētdiena, 2012. gada 18. oktobris 10:36:20 GMT Serveris: Apache/2.2.14 (Win32) Satura garums: 230 Satura veids: teksts/html; charset=iso-8859-1 Savienojums: Slēgts 400 Slikts pieprasījums Slikts pieprasījums

Jūsu pārlūkprogramma nosūtīja pieprasījumu, ko šis serveris nevarēja saprast.

Pieprasījuma rindā pēc protokola virknes bija nederīgas rakstzīmes.

Šajā rakstā ir sniegts kopsavilkums par atbildēm, ko organizācija vai projekts var veikt, lai pārvaldītu risku. Risku var definēt kā iznākuma nenoteiktību, vai tas ir pozitīvs (iespēja) vai negatīvs (drauds). Riska pārvaldība ir būtiska projekta panākumiem, un riska pārvaldības uzdevums ir pārvaldīt projekta pakļautību riskam ().

Reakcijai uz noteiktu risku ir jāatspoguļo riska veids, riska novērtējums (iespējamība, ietekme, kritiskums) un organizācijas attieksme pret risku. Pastāv vairākas iespējamās atbildes reakcijas uz riskiem, un, tā kā riski var būt draudi vai iespējas, tie ietver atbildes, kas ir piemērotas potenciālajām iespējām. Atbildes ir apkopotas zemāk esošajā tabulā.

Riska reakciju tabula
Riska reakcija Apraksts/piemērs

Piemērots…. riska veidi (tie ir ieteikumi un nav izsmeļoši)

Draudi
Izvairīties

No riska var izvairīties, kaut kādā veidā mainot projektu, lai apietu risku.

Daži politiskie riski, piem. nelabvēlīgs sabiedrības viedoklis Daži tehniski/darbības/infrastruktūras riski, piem. apkopes problēmas. Juridiskie un regulējošie riski, piem. normatīvās kontroles, licencēšanas prasības.

Pārsūtīšana

Daži stratēģiski/komerciāli riski, piem. zādzību, maksātnespēju var apdrošināt. Vairāk piemēru skatiet sadaļā Uzņēmējdarbības riski.

Samazināt

Tiek veikti pasākumi, lai samazinātu riska rašanās iespējamību vai tā ietekmi.

Visbiežāk izmantotā reakcija uz risku.

Plaši piemērojams - Tehniskā/Operācijas/Infrastruktūra, piem. nolaidība, neveiksme izpildījumā, darbības joma 'creep', neskaidras cerības.

Organizatoriskie/vadības/cilvēciskie faktori, piem. personības sadursmes, slikta vadība un slikta personāla atlase.

Iespējams, ir jāpieņem daži politiski, juridiski un regulatīvi, kā arī ekonomiski/finansiāli riski, piemēram, karš un nekārtības, valūtas kursa svārstības.

Neparedzētiem gadījumiem Šeit tiek izstrādāts plāns, kā reaģēt, ja risks tiek realizēts.

Ekonomikas/finanšu/tirgus
Politisks
Juridiskie un regulējošie

Iespējams, visiem riskiem var un vajadzētu būt ārkārtas rīcības plānam.

Iespējas
Dalīties Ar partneri vai piegādātāju tiek kopīgota iespēja maksimāli palielināt ieguvumus, izmantojot kopīgu resursu/tehnoloģiju utt. Tehniskā/darbības/infrastruktūra, piem. jaunas tehnoloģijas, uzlaboti dizaini.
Ekspluatēt Projektu var pielāgot, lai izmantotu tehnoloģiju izmaiņas vai jaunu tirgu. Ekonomikas/finanšu/tirgus piem. jauni un topošie tirgi, pozitīvas valūtas kursu vai procentu likmju izmaiņas.
Uzlabot Tiek veiktas darbības, lai palielinātu iespējas rašanās iespējamību vai tās pozitīvo ietekmi. Stratēģiskas/komerciālas iespējas, piemēram, jaunas partnerības, jauni kapitālieguldījumi, jauni veicinātāji.
Noraidīt Šeit netiek veiktas nekādas darbības, un iespēja gūt labumu no iespējas tiek noraidīta. var ieviest, ja rodas iespēja. Politiskā vai vides, piem. jauni transporta savienojumi, valdības maiņa, kas nes pozitīvas izmaiņas politikā/lobēšanas iespējās utt.

Ārkārtas rīcības plānos būtu jānosaka darbības, kas tiks veiktas, ja rodas risks. Neparedzētām darbībām bieži būs saistītas izmaksas, un biznesa gadījumā ir jāatvēl budžets, lai to segtu. Top 50 biznesa riski un kā tos pārvaldīt! 20 bieži sastopami projektu riski — piemērs Risku reģistra kontrolsaraksts ar 30 būvniecības risku riska atbildēm — atsauces Office of Government Commerce (2002), Managing Successful Projects with PRINCE2, London: PSO.

The Projects Group PLC, 2006, Risk Management Overview, Sutton: The Projects Group plc.

Tulkojums: Vlads Merževičs

Ikviens zina par tīmekļa veidlapām, vai ne? Mēs ievietojam tagu, dažas, iespējams, pabeidzam to visu ar pogu un esat pabeidzis.

Jūs nezināt pusi no tā. HTML5 definē vairāk nekā duci jaunu lauku veidu, ko varat izmantot savās veidlapās. Un, kad es saku "izmantot", es domāju, ka tos var izmantot uzreiz - bez trikiem, uzlaušanas vai risinājumiem. Neuztraucieties pārāk daudz, es nesaku, ka visas šīs aizraujošās jaunās funkcijas faktiski tiek atbalstītas katrā pārlūkprogrammā. Absolūti nē, es nedomāju ar visiem. Jā, mūsdienu pārlūkprogrammās jūsu veidlapās tiks parādīts viss, ko tās spēj. Taču vecākās pārlūkprogrammās jūsu veidlapas joprojām darbosies, lai gan ne pilnībā. Tas nozīmē, ka šīs funkcijas tiek graciozi degradētas katrā pārlūkprogrammā. Pat IE6.

Uzvednes teksts Ātrs teksta atbalsts
I.E. Firefox Safari Chrome Opera iPhone Android
- 4.0+ 4.0+ 4.0+ 11.0+ 4.0+ -

Pirmais HTML5 uzlabojums attiecībā uz veidlapām ir iespēja iestatīt uzvednes tekstu ievades laukā. Šis teksts tiek parādīts ievades laukā, ja lauks ir tukšs un tam nav fokusa. Tiklīdz noklikšķināsiet uz ievades lauka (vai pārejiet uz to, izmantojot cilni), mājiena teksts pazūd.

Jūs, iespējams, jau esat redzējis uzvednes tekstu. Piemēram, pārlūkprogrammas Mozilla Firefox adreses joslā ir ietverts divdomīgs teksts ar tekstu “Meklēt grāmatzīmēs un vēsturē”.

Noklikšķinot uz adreses joslas, mājiena teksts pazūd.

Lūk, kā savās veidlapās varat iekļaut divdomīgu tekstu.




Pārlūkprogrammas, kas neatbalsta viettura atribūtu, to vienkārši ignorē. Nav kaitējuma vai pārkāpuma.

Jautājiet profesoram Markupam

☞ J. Vai viettura atribūtam var izmantot HTML marķējumu? Gribu ievietot bildi vai varbūt mainīt krāsas.

A. Viettura atribūts var saturēt tikai tekstu, bez HTML koda. Tomēr ir īpaši CSS paplašinājumi, kas dažās pārlūkprogrammās ļauj iestatīt teksta stilu.

Autofokusa lauki Autofokusa atbalsts
I.E. Firefox Safari Chrome Opera iPhone Android
- - 4.0+ 3.0+ 10.0+ - -

Vietnes var izmantot JavaScript, lai automātiski koncentrētos uz pirmo veidlapas lauku. Piemēram, galvenajā lapā Google.com Meklēšanas atslēgvārdu ievadīšanas laukā ir autofokuss. Lai gan tas ir ērti lielākajai daļai cilvēku, tas var būt kaitinoši pieredzējušiem lietotājiem un cilvēkiem ar īpašām vajadzībām. Ja nospiežat atstarpes taustiņu, gaidot, kamēr lapa tiks ritināta, ritināšana netiks veikta, jo fokuss ir veidlapas ievades laukā (ritināšanas vietā laukā tiks ievadīts atstarpe). Ja pārvietojat fokusu uz citu ievades lauku, kamēr lapa tiek ielādēta, vietnes autofokusa skripts var “noderīgi” pārvietot fokusu atpakaļ uz sākotnējo ievades lauku, pārtraucot rakstīšanu un liekot rakstīt nepareizā vietā.

Tā kā autofokuss darbojas, izmantojot JavaScript, var rasties grūtības rīkoties ar šiem ekstrēmiem gadījumiem un nelielas iespējas tiem cilvēkiem, kuri nevēlas, lai tīmekļa lapa "nozagtu" viņu fokusu.

Lai atrisinātu šīs problēmas, HTML5 ievieš autofokusa atribūtu visiem formas elementiem. Autofokusa atribūts dara tieši tā, kā izklausās: tiklīdz lapa tiek ielādēta, tas pārvieto fokusu uz norādīto lauku. Bet, tā kā tas ir tikai marķējums, nevis skripts, darbība būs konsekventa visās vietnēs. Turklāt pārlūkprogrammu ražotāji (vai paplašinājumu autori) var piedāvāt lietotājiem veidu, kā atspējot autofokusu.

Lūk, kā veidlapas laukā varat iestatīt automātisko fokusu.




Pārlūkprogrammas, kas neatbalsta autofokusa atribūtu, to ignorēs.

Kas notika? Pieņemsim, ka vēlaties, lai autofokuss darbotos visur, ne tikai izdomātās HTML5 pārlūkprogrammās? Varat atstāt pašreizējo skriptu ar autofokusu, tikai veiciet divas nelielas izmaiņas:

  • pievienot HTML kodam autofokusa atribūtu;
  • Pārbaudiet, vai pārlūkprogramma atbalsta automātiskās fokusēšanas atribūtu, un, ja nē, palaidiet savu skriptu.

Autofokuss ar alternatīvu




if (!("autofokuss" dokumentā document.createElement("input")) ) (
document.getElementById("q").focus();
}


Iestatiet fokusu agri

Daudzas tīmekļa lapas gaida, līdz tiks aktivizēts logs.onload un iestatīts fokuss. Bet notikums window.onload netiks aktivizēts, kamēr nav ielādēti visi attēli. Ja jūsu lapā ir daudz attēlu, šādi naivi skripti, iespējams, mainīs fokusu pēc tam, kad lietotājs būs sācis mijiedarboties ar citu jūsu lapas daļu. Tāpēc jaukti lietotāji ienīst autofokusa skriptus.

Piemēram, iepriekšējā sadaļā automātiskā fokusa skripts tika ievietots uzreiz aiz veidlapas lauka, uz kuru tas atsaucās. Šis ir optimālais risinājums, taču tas var aizskart jūsu jutīgumu, ievietojot JavaScript koda bloku lapas vidū (vai ikdienišķāk, jūsu sistēma var nebūt tik elastīga). Ja nevarat ievietot skriptu lapas vidū, iestatiet fokusu, izmantojot pielāgotu notikumu, piemēram, $(document).ready() programmā jQuery, nevis window.onload.

Autofokuss, izmantojot jQuery




$(dokuments).ready(function() (

$("#q").focus();
}
});






jQuery pielāgotais notikums tiek aktivizēts, tiklīdz ir pieejams DOM — tas ir, tas gaida, līdz tiek ielādēts lapas teksts, bet negaida, līdz tiks ielādēti visi attēli. Šī nav optimāla pieeja — ja lapa ir neparasti liela vai tīkla savienojums ir lēns, lietotājs joprojām var mijiedarboties ar lapu, pirms tiek izpildīts fokusa skripts. Bet tas joprojām ir daudz labāk, nekā gaidīt, kamēr notiks notikums window.onload.

Ja piekrītat un vēlaties savas lapas kodā ievietot viena priekšraksta skriptu, šis ir kompromiss, kas ir mazāk šķebinošs nekā pirmā opcija un labāks par otro. Varat izmantot jQuery pielāgotos notikumus, lai iestatītu savus notikumus, piemēram, autofocus_ready. Pēc tam varat aktivizēt šo notikumu manuāli, tiklīdz kļūst pieejams autofokusa lauks. Paldies E.M. Štenbergam, ka man iemācīja šo tehniku.

Autofokuss ar alternatīvu pielāgotu notikumu




$(document).bind("autofocus_ready", function() (
if (!("autofokuss" dokumentā document.createElement("input"))) (
$("#q").focus();
}
});





$(dokuments).trigger("autofocus_ready");

Šis risinājums ir optimāls, tāpat kā pirmā pieeja. Fokuss tiks iestatīts uz veidlapas lauku, tiklīdz tas ir tehniski iespējams, kamēr lapas teksts joprojām tiek ielādēts. Daļa lietojumprogrammas loģikas (fokuss veidlapas laukā) ir pārvietota no lapas pamatteksta uz sadaļu. Šis piemērs ir balstīts uz jQuery, taču pielāgoto notikumu jēdziens nav unikāls jQuery. Citas JavaScript bibliotēkas, piemēram, YUI un Dojo, piedāvā līdzīgas iespējas.

Apkoposim.

  • Ir svarīgi pareizi iestatīt fokusu.
  • Ja iespējams, lieciet pārlūkprogrammai izmantot autofokusa atribūtu laukā, kurā vēlaties fokusēt.
  • Ja izmantojat alternatīvu kodu vecākām pārlūkprogrammām, definējiet atbalstu autofokusa atribūtam, lai skripts darbotos tikai vecākās pārlūkprogrammās.
  • Uzstādiet fokusu pēc iespējas agrāk. Ievietojiet fokusa skriptu kodā tūlīt aiz veidlapas lauka. Ja tas jūs netraucē, ieguliet JavaScript bibliotēku, kas atbalsta pielāgotus notikumus, un paceliet notikumu kodā uzreiz aiz veidlapas lauka. Ja tas nav iespējams, izmantojiet notikumu, piemēram, $(document).ready() no jQuery.
  • Nekādā gadījumā nevajadzētu gaidīt, līdz windows.onload iegūst fokusu.
E-pasta adreses

Vairāk nekā desmit gadus veidlapās ir ietverti tikai daži lauku veidi. Visizplatītākie ir šādi.

Visi šie lauku veidi joprojām darbojas HTML5. Ja veicat jaunināšanu uz HTML5 (iespējams, mainot !DOCTYPE ), jums nebūs jāveic nekādas izmaiņas savās veidlapās. Jā, par atpakaļejošu saderību!

Tomēr HTML5 definē 13 jaunus lauku veidus, un nav iemesla nesākt tos izmantot.

Pirmā no šiem jaunajiem e-pasta adrešu veidiem. Tas izskatās apmēram šādi.





Es gatavojos uzrakstīt teikumu, kas sākās "pārlūkprogrammās, kas neatbalsta type="email" ...", bet apstājās. Kāpēc? Jo es neesmu pārliecināts, vai pārlūkprogrammas neatbalsta type="email" . Visas pārlūkprogrammas "support" type="email" . Viņi var nedarīt neko īpašu, taču pārlūkprogrammas, kas neatpazīst type="email", to apstrādās kā type="text" un atveidos to kā parastu teksta lauku.

Es uzsvēršu, cik tas ir svarīgi. Internetā ir miljoniem veidlapu, kurās tiek prasīts ievadīt savu e-pasta adresi, un visas izmanto . Jūs redzat tekstlodziņu, ievadiet tajā savu e-pasta adresi un viss. Un tad nāk HTML5, kas definē type="email" . Vai pārlūkprogrammas kļūst trakas? Nē. Katrs pārlūks uz Zemes apstrādā nezināmā tipa atribūtu kā type="text" — pat IE6. Tātad jūs varat "atsvaidzināt" savas veidlapas, izmantojot type="email".

Kas notiek, ja sakām, ka pārlūkprogramma atbalsta type="email"? Nu, tas varētu nozīmēt jebko. HTML5 specifikācijai nav nepieciešama īpaša lietotāja saskarne jaunajiem lauku veidiem. Opera pievieno nelielu ikonu veidlapas laukam. Citas HTML5 pārlūkprogrammas, piemēram, Safari un Chrome, tiek renderētas kā teksta lauks — tāds pats kā type="text" — tāpēc lietotāji nepamanīs atšķirību (kamēr viņi neapskatīs avota kodu).

Un tad ir iPhone.

iPhone nav fiziskas tastatūras. Visa “rakstīšana” tiek veikta, noklikšķinot uz ekrāna tastatūras, kas tiek parādīta atbilstošajā laikā, piemēram, atverot veidlapas lauku tīmekļa lapā. Apple paveica kaut ko gudru ar iPhone pārlūkprogrammu. Tas atpazīst dažus jaunus HTML5 laukus un dinamiski maina ekrāna tastatūru, lai optimizētu ievadi.

Piemēram, e-pasta adrese ir teksts, vai ne? Protams, bet tas ir īpašs teksta veids. Tādējādi gandrīz visās e-pasta adresēs ir simbols @ un vismaz viens punkts (.), taču maz ticams, ka tajās būs atstarpe. Tātad, kad izmantojat iPhone tālruni un atverat , jūs iegūsit ekrāna tastatūru, kas ietver mazāku atstarpes taustiņu, kā arī īpašus taustiņus simboliem. Un @.

Ļaujiet man to apkopot. Tūlītējai visu e-pasta lauku pārvēršanai par type="email" nav nekādu negatīvu faktoru. To nepamanīs gandrīz neviens, izņemot iPhone lietotājus, kuri, visticamāk, arī to nepamanīs. Bet tie, kas pamanīs, klusi pasmaidīs un pateiksies, ka nedaudz atvieglojat viņu darbu.

Web adreses

Tīmekļa adrese, ko standarti sauc par URL, izņemot dažus pedantus, kuri sauca URI, ir vēl viens specializēta teksta veids. Tīmekļa adreses sintakse ir ierobežota līdz attiecīgajam interneta standartam. Ja kāds lūdz jūs veidlapā ievadīt tīmekļa adresi, viņš sagaida kaut ko līdzīgu “http://www.google.com/”, nevis “Farwood Road 125”. Slīpsvītras ir izplatītas — pat Google mājaslapā ir trīs no tām. Bieži sastopami arī punkti, taču atstarpes ir aizliegtas. Un katrai tīmekļa adresei ir domēna sufikss, piemēram, ".com" vai ".org".

Un tā... (lūdzu bungu ripināšana)... . Uz iPhone tas izskatās šādi.

IPhone ir pārveidojis savu virtuālo tastatūru tāpat kā e-pastam, bet tagad optimizē to tīmekļa adreses ierakstīšanai. Atstarpes taustiņš ir pilnībā aizstāts ar trim virtuālajiem taustiņiem: slīpsvītra, punkts un ".com" (varat turēt nospiestu taustiņu ".com", lai atlasītu citu sufiksu, piemēram, ".org" vai ".net").

Pārlūkprogrammas, kas neatbalsta HTML5, uzskatīs type="url" kā type="text" , tāpēc šī veida izmantošanai visos laukos, kur jāievada tīmekļa adrese, nav nekādu trūkumu.

Skaitļi kā skaitītāji

Nākamais solis: cipari. Numura pieprasīšana ir sarežģītāka nekā e-pasta vai tīmekļa adreses pieprasīšana. Pirmkārt, skaitļi ir sarežģītāki, nekā jūs domājat. Ātri izvēlieties numuru. -1? Nē, es domāju skaitli no 1 līdz 10,7 ½? Nē, nē, neesi stulbs. π? Tagad jūs tikko izvēlējāties neracionālu skaitli.

Es vēlētos atzīmēt, ka jums bieži netiek jautāts “tikai skaitlis”. Visticamāk, ka viņi prasīs skaitli noteiktā diapazonā. Iespējams, šajā diapazonā vēlēsities tikai noteiktus skaitļu veidus — varbūt veselus skaitļus, bet ne daļskaitļus vai decimāldaļas vai kaut ko eksotiskāku, piemēram, 10 reizinātājus. HTML5 aptver visu šo.

Izvēlieties numuru, gandrīz jebkuru

Apskatīsim vienu atribūtu vienlaikus.

  • type="number" nozīmē, ka šis ir ciparu lauks.
  • min="0" norāda minimālo atļauto vērtību šim laukam.
  • max = "10" ir maksimālā atļautā vērtība.
  • step="2" kombinācijā ar minimālo vērtību nosaka derīgos skaitļus diapazonā: 0, 2, 4 un tā tālāk, līdz maksimālajai vērtībai.
  • value="6" noklusējuma vērtība. Tam vajadzētu izskatīties pazīstami, jo tas ir tas pats atribūts, kas vienmēr tiek izmantots veidlapas lauku vērtību definēšanai. Es to minēju kā sākumpunktu, jo HTML5 pamatā ir iepriekšējās HTML versijas. Jums nav jāmācās no jauna darīt to, ko jau esat izdarījis.

Šis ir ciparu lauka kods. Ņemiet vērā, ka visi šie atribūti nav obligāti. Ja jums ir minimālais, bet ne maksimums, varat norādīt atribūtu min, bet ne maksimālo atribūtu. Noklusējuma soļa vērtība ir 1, un jūs varat izlaist soļa atribūtu, līdz ir nepieciešama cita soļa vērtība. Ja noklusējuma vērtības nav, vērtības atribūts var būt tukša virkne vai pat to var izlaist.

Taču HTML5 ar to nebeidzas. Par to pašu zemo un zemo brīvības cenu jūs iegūstat šīs parocīgās JavaScript metodes.

  • input.stepUp(n) palielina lauka vērtību par n.
  • input.stepDown(n) samazina lauka vērtību par n.
  • input.valueAsNumber atgriež pašreizējo vērtību kā peldošā komata skaitli (rekvizīts input.value vienmēr ir virkne).

Displeja problēmas? Pareizais skaitļu pārvaldības interfeiss pārlūkprogrammās tiek ieviests atšķirīgi. iPhone tālrunī, kur ir grūti rakstīt, pārlūkprogramma atkal optimizē virtuālo tastatūru ciparu ievadīšanai.

Opera darbvirsmas versijā lauks type="number" parādās kā skaitītājs ar mazām augšup un lejup vērstām bultiņām, uz kurām varat noklikšķināt, lai mainītu vērtības.

Opera ievēro min , max un step atribūtus, tāpēc jūs vienmēr sasniegsit pieņemamu skaitlisko vērtību. Ja palielināsiet vērtību līdz maksimālajai vērtībai, augšupvērstā bultiņa skaitītājā kļūst pelēka.

Tāpat kā ar visiem citiem ievades laukiem, par kuriem esmu runājis šajā nodaļā, pārlūkprogrammas, kas neatbalsta type="number" to apstrādās kā type="text" . Laukā tiks parādīta noklusējuma vērtība (kā tā ir saglabāta vērtības atribūtā), bet citi atribūti, piemēram, min un max, tiks ignorēti. Varat tos ieviest pats vai izmantot JavaScript ietvaru, kas jau ievieš skaitītāju pārvaldību. Vispirms pārbaudiet šeit.

if (! .inputtypes.number) (
// nav vietējā atbalsta lauka type=number
// varētu izmēģināt Dojo vai citu JavaScript ietvaru
}

Cipari kā slīdnis

Skaitītājs nav vienīgais veids, kā attēlot skaitļu ievadi. Jūs droši vien esat redzējuši arī slīdni, kas izskatās šādi.

Tagad veidlapā var būt arī slīdnis. Kods izskatās dīvaini līdzīgs skaitītāja laukam.


Visi pieejamie atribūti ir tādi paši kā tipa = "number" - min , max , step , value - un nozīmē to pašu. Vienīgā atšķirība ir lietotāja interfeiss. Ievades lauka vietā pārlūkprogrammām ir jāparāda type="range" kā slīdnis. Rakstīšanas laikā ar to darbojas jaunākās Safari, Chrome un Opera versijas. Diemžēl iPhone tiek rādīts kā vienkāršs teksta lauks; tas pat neoptimizē ekrāna tastatūru ciparu ievadīšanai. Visas pārējās pārlūkprogrammas vienkārši apstrādā šo lauku kā type="text" , tāpēc nav iemesla nekavējoties sākt lietot šo veidu.

HTML 4 neietver datumu atlasi, izmantojot kalendāru. JavaScript ietvari ļauj jums to apiet (Dojo, jQuery UI, YUI, Closure Library), taču, protams, katram no šiem risinājumiem ir nepieciešams “ieviest” ietvaru jebkuram iebūvētajam kalendāram.

HTML5 beidzot definē veidu, kā iespējot vietējos datumu atlasītājus bez skripta. Patiesībā ir seši no tiem: datums, mēnesis, nedēļa, laiks, datums + laiks un datums + laiks ar laika joslu.

Pagaidām atbalsts ir... niecīgs.

Datuma atlasītāja atbalsts Ierakstiet Opera Citas pārlūkprogrammas
type="date" 9.0+ -
type = "mēnesis" 9.0+ -
type="nedēļa" 9.0+ -
type="time" 9.0+ -
type="datetime" 9.0+ -
type="datetime-local" 9.0+ -

Lūk, kā Opera parāda:

Ja jums ir nepieciešams laiks kopā ar datumu, Opera atbalsta arī:

Ja jums ir nepieciešams mēnesis plus gads (piemēram, kredītkartes derīguma termiņš), Opera var parādīt:

Retāk, bet iespējams, ir izvēlēties gada nedēļu, izmantojot:

Pēdējais, bet ne mazāk svarīgais ir laiks ar:

Datuma atlasītājs ar alternatīvu




...

var i = document.createElement("ievade");
i.setAttribute("tips", "datums");
if (i.type == "teksts") (
// Nav vietējā datuma atlasītāja atbalsta :(
// Izmantojiet Dojo/jQueryUI/YUI/Closure, lai to izveidotu,
// pēc tam dinamiski nomainiet elementu
}

Iespējams, ka citas pārlūkprogrammas galu galā atbalstīs šos veidus. Tāpat kā type="email" un citi veidi, šie veidlapas lauki tiks parādīti kā vienkāršs teksts pārlūkprogrammās, kas neatpazīst type="date" un tā variantus. Ja vēlaties, varat vienkārši izmantot , iepriecināt Opera lietotājus un gaidīt, kamēr citas pārlūkprogrammas panāk. To ir reālāk izmantot, taču pārbaudiet, vai pārlūkprogrammai ir vietējais datumu atlasītāja atbalsts, un iekļaujiet alternatīvu risinājumu jūsu izvēlēta skripta veidā (Dojo, jQuery UI, YUI, Closure Library vai citas opcijas).

Meklēšanas logs

Tātad, meklējiet. Ne tikai meklējumi no Google vai Yahoo (labi, arī tie). Padomājiet par jebkuru meklēšanas lodziņu jebkurā lapā, jebkurā vietnē. Amazon ir meklēšanas lodziņš, Yandex ir meklēšanas lodziņš, vairumam emuāru arī ir. Kā tie tiek izgatavoti? , tāpat kā jebkurš cits teksta lauks tīmeklī. Labosim šo.

Meklē jaunu paaudzi




Dažās pārlūkprogrammās jūs nepamanīsit nekādas atšķirības no parastā teksta lauka. Bet, ja izmantojat Safari operētājsistēmā Mac OS X, tas izskatīsies šādi.

Vai atradāt atšķirību? Ievades laukam ir noapaļoti stūri! Es zinu, es zinu, tu diez vai vari apvaldīt savas jūtas. Bet pagaidiet, tur ir vairāk! Kad sākat rakstīt laukā type="search", Safari loga labajā pusē ievietos nelielu pogu "x". Noklikšķinot uz "x", lauka saturs tiek notīrīts. Google Chrome, kuram zem pārsega ir tāda pati tehnoloģija, darbojas tāpat. Abi šie mazie triki izskatās un darbojas līdzīgi vietējai meklēšanai iTunes un citās Mac OS X klientu lietojumprogrammās.

Apple.com izmanto meklēšanu vietnē, lai palīdzētu vietnei radīt "aru mīlošu" sajūtu. Bet šeit nav nekā specifiska Mac datoriem. Tas ir tikai kods, tāpēc katrs pārlūks katrā platformā var izvēlēties, kā renderēt atbilstoši platformas noteikumiem. Tāpat kā ar visiem citiem jaunajiem veidiem, pārlūkprogrammas, kas neatpazīst type="search", to apstrādās kā type="text" , tāpēc nav nekāda iemesla nesākt izmantot type="search" visiem meklēšanas lodziņiem šodien .

saka profesors Markups

Pēc noklusējuma Safari neizmanto lielāko daļu stilu. Ja vēlaties piespiest Safari apstrādāt meklēšanas lauku kā parastu teksta lauku (lai jūs varētu lietot savus stilus), pievienojiet šo noteikumu savai stila lapai.

ievade(
-webkit-appearance:textfield;
}

Paldies Džonam Leinam, ka viņš man iemācīja šo triku.

Krāsu izvēle

HTML5 arī definē lauku, kas ļauj atlasīt krāsu un atgriež to heksadecimālā veidā. Neviena pārlūkprogramma neatbalsta krāsu atlasītājus, kas ir kauns, jo man vienmēr ir patikušas Mac OS paletes. Varbūt kādu dienu.

Piezīme tulkotājs Opera 11 atbalsta šo funkciju.

Veidlapas apstiprināšana

Šajā nodaļā es runāju par jauniem formas elementiem un jaunām funkcijām, piemēram, autofokusu, taču es nepieminēju, iespējams, aizraujošāko HTML5 veidlapu daļu: automātisko ievades validāciju. Apskatīsim izplatītākās problēmas ar e-pasta adreses ievadīšanu veidlapā. Iespējams, jums ir klienta puses validācija, izmantojot JavaScript, kam seko servera puses validācija, izmantojot PHP, Python vai citu servera puses valodu. HTML5 nekad neaizstās servera puses validāciju, taču kādu dienu tas var aizstāt klienta puses validāciju.

Ir divas lielas problēmas ar e-pasta adreses validāciju JavaScript:

  • Nelielam skaitam jūsu apmeklētāju (iespējams, aptuveni 10%) nav iespējots JavaScript.
  • Adresi saņemsiet nepareizi.
  • Ja nopietni, jūs saņemsit nepareizu adresi. Ir neticami grūti noteikt, vai nejaušu rakstzīmju kopa ir derīga e-pasta adrese. Jo stingrāk skatāties, jo grūtāk kļūst. Vai es minēju, ka tas ir ļoti, ļoti grūti? Vai nav vieglāk šo galvassāpju uzkarināt savā pārlūkprogrammā?

    Opera pārbauda type="email"

    Šeit ir ekrānuzņēmums no Opera 11, lai gan funkcionalitāte ir pieejama kopš Opera 9. Kods ietver e-pasta vērtības iestatīšanu tipa atribūtam. Kad Opera lietotājs mēģina iesniegt veidlapu, izmantojot , pārlūkprogramma automātiski pārbauda e-pasta adresi, pat ja skripti ir atspējoti.

    HTML5 piedāvā arī tīmekļa adrešu validāciju ar lauku un skaitļiem ar . Skaitļu validācijā tiek ņemtas vērā atribūtu min un max vērtības, tāpēc pārlūkprogrammas neļaus iesniegt veidlapu, ja ievadāt pārāk lielu skaitli.

    Nav koda, kas iespējotu veidlapu validāciju HTML5, tas tiek darīts pēc noklusējuma. Lai atspējotu validāciju, izmantojiet atribūtu novalidate.

    Nepārbaudi mani




    Pārlūkprogrammas ir lēnas, lai iekļautu veidlapu validācijas atbalstu HTML5. Firefox 4 būs pilnīgs atbalsts. Diemžēl Safari un Chrome ir ieviesti tikai daļēji: tie apstiprina veidlapas elementus, bet nerāda nekādus redzamus ziņojumus, ja veidlapas lauka validācija neizdodas. Citiem vārdiem sakot, ja laukā type="date" ievadīsiet nepareizu (vai nepareizi uzrakstītu) datumu, pārlūkprogramma Safari un Chrome neiesniegs veidlapu, taču nepateiks, kāpēc tas netika iesniegts. Tie iestatīs fokusu uz lauku, kurā ir nederīga vērtība, taču netiks rādīts kļūdas ziņojums, piemēram, Opera vai Firefox 4.

    Obligāti aizpildāmie lauki Atbalsts
    I.E. Firefox Safari Chrome Opera iPhone Android
    - 4.0+ - - 9.0+ - -

    Veidlapu validācija HTML5 neaprobežojas tikai ar katra lauka veidu. Varat arī norādīt, ka daži lauki ir obligāti. Šādiem laukiem ir jābūt vērtībai, pirms varat iesniegt veidlapu.

    Obligāto lauku kods ir tik vienkāršs, cik vien iespējams.




    Pārlūkprogrammas var mainīt obligātā lauka sākotnējo izskatu. Šis ir piemērs tam, kā tas izskatās pārlūkprogrammā Mozilla Firefox 4.0.

    Turklāt, ja mēģināt iesniegt veidlapu, neaizpildot nepieciešamo vērtību, Firefox parādīs informācijas joslu, norādot, ka lauks ir obligāts un nevar būt tukšs.

    Atbildes ģenerēšana no kontrolieriem

    Kad pārzinis ir pabeidzis pieprasījuma apstrādi, tam parasti ir jāģenerē atbilde. Kad mēs izveidojam zema līmeņa kontrolieri, tieši ieviešot IController saskarni, mums ir jāuzņemas atbildība par katru pieprasījuma apstrādes aspektu, tostarp atbildes ģenerēšanu klientam.

    Piemēram, lai nosūtītu HTML atbildi, jums ir jāizveido un jāsastāda HTML dati un pēc tam tie jānosūta klientam, izmantojot metodi Response.Write(). Tāpat, lai novirzītu lietotāja pārlūkprogrammu uz citu URL, jums būs jāizsauc metode Response.Redirect() un jānosūta tai nepieciešamais URL. Abas pieejas ir parādītas tālāk esošajā kodā, kas parāda BasicController klases paplašinājumus, ko izveidojām iepriekšējā rakstā, ieviešot IController saskarni:

    Izmantojot System.Web.Mvc; izmantojot System.Web.Routing; namespace ControllersAndActions.Controllers ( publiska klase BasicController: IController ( public void Execute(RequestContext requestContext)) ( virknes kontrolleris = (string)requestContext.RouteData.Values["kontrolieris"]; virknes darbība = (string)requestContext.Route"action.Values "]; if (action.ToLower() == "novirzīt") ( requestContext.HttpContext.Response.Redirect("/Derived/Index"); ) else ( requestContext.HttpContext.Response.Write(string.Format("Controller) : (0), darbības metode: (1)", kontrolieris, darbība)); ) ) ) )

    To pašu pieeju var izmantot, ja kontrolieris tiek mantots no Controller klases. Klasei HttpResponseBase, kas tiek atgriezta, kad rekvizīts requestContext.HttpContext.Response tiek nolasīts ar metodi Execute(), ir pieejama, izmantojot rekvizītu Controller.Response, kā parādīts tālāk esošajā piemērā, kas paplašina DerivedController klasi, ko arī iepriekš izveidoja mantojot no Controller klases:

    Sistēmas izmantošana; izmantojot System.Web; izmantojot System.Web.Mvc; namespace ControllersAndActions.Controllers ( publiska klase DerivedController: Controller ( public ActionResult Index() ( // ... ) public void ProduceOutput() ( if (Server.MachineName == "ProfessorWeb") Response.Redirect("/Basic/Index" ); else Response.Write(" Kontrolieris: atvasināts, darbības metode: ProduceOutput"); ) ) )

    Metode ProduceOutput() izmanto rekvizīta Server.MachineName vērtību, lai izlemtu, kādu atbildi nosūtīt klientam. ("ProfessorWeb" ir manas izstrādes iekārtas nosaukums.)

    Lai gan šī pieeja lietotājam atbildes ģenerēšanai darbojas, ar to ir vairākas problēmas:

      Kontrolieru klasēs ir jāietver HTML vai URL struktūras informācija, kas padara klases grūti lasāmas un uzturējamas.

      Kontrolieri, kas ģenerē atbildi tieši uz izvadi, ir grūti pārbaudīt vienībā. Jums būs jāizveido atbildes objekta imitācijas implementācijas un pēc tam jāspēj apstrādāt kontrollera izvade, lai noteiktu, kas tas ir. Tas varētu nozīmēt, piemēram, nepieciešamību analizēt atslēgvārdu HTML marķējumu, kas ir ilgs un nogurdinošs process.

      Katras atbildes sīku detaļu apstrāde šādā veidā ir sarežģīta un kļūdu iespējamība. Dažiem programmētājiem patīk absolūtā kontrole, ko nodrošina zema līmeņa kontrollera izveide, taču tas parasti kļūst sarežģīts ļoti ātri.

    Par laimi, MVC Framework ir ērts rīks, kas atrisina visas šīs problēmas - darbību rezultātus. Nākamajās sadaļās ir izskaidrots darbības rezultātu jēdziens un parādīti dažādi veidi, kā to var izmantot, lai ģenerētu atbildes no kontrolieriem.

    Darbību rezultāti

    Darbību rezultāti MVC ietvarā tiek izmantoti, lai atdalītu nodomu paziņojumus no nodomu izpildes (atvainojiet par tautoloģiju). Jēdziens šķitīs vienkāršs, tiklīdz jūs to sapratīsit, taču ir nepieciešams zināms laiks, lai to saprastu dažu netiešu iemeslu dēļ.

    Tā vietā, lai tieši risinātu atbildes objektu, darbības metodes atgriež no ActionResult atvasinātu klases objektu, kas apraksta, kādai jābūt kontrollera atbildei, piemēram, atveidojot skatu vai novirzot uz citu URL vai darbības metodi. Tomēr (tā ir pati netiešība) atbilde netiek tieši ģenerēta. Tā vietā tiek izveidots ActionResult objekts, kuru MVC Framework apstrādā, lai iegūtu rezultātu pēc darbības metodes izsaukšanas.

    Darbības rezultātu sistēma ir komandas dizaina modeļa piemērs. Šis modelis attēlo scenārijus, kuros glabājat un nododat objektus, kas apraksta veicamās darbības.

    Kad MVC Framework saņem ActionResult objektu no darbības metodes, tas izsauc ExecuteResult() metode, kas definēts šī objekta klasē. Darbības rezultātu ieviešana pēc tam darbojas uz atbildes objektu, ģenerējot izvadi, kas atbilst jūsu nodomam. Lai to demonstrētu darbībā, izveidosim mapi Infrastructure un pievienosim tai jaunu klases failu ar nosaukumu CustomRedirectResult.cs ar pielāgotu ActionResult ieviešanu, kas parādīta tālāk esošajā piemērā:

    Izmantojot System.Web.Mvc; namespace ControllersAndActions.Infrastructure ( publiskā klase CustomRedirectResult: ActionResult ( publiskā virkne URL ( get; set; ) public override void ExecuteResult(ControllerContext konteksts) ( virkne fullUrl = UrlHelper.GenerateReContentUrl(Url, context.Context.Context.Http); (fullUrl); ) ) )

    Šīs klases pamatā ir veids, kā darbojas klase System.Web.Mvc.RedirectResult. Viena no atvērtā pirmkoda MVC Framework priekšrocībām ir iespēja izpētīt jebko iekšējo darbību. CustomRedirectResult klase ir daudz vienkāršāka nekā tās MVC ekvivalents, taču šī raksta vajadzībām ar to pietiek.

    Instantierējot klasi RedirectResult, mēs nododam URL, uz kuru lietotājs ir jānovirza. Metode ExecuteResult(), ko izpildīs MVC Framework, kad darbības metode būs pabeigta, saņem atbildes objektu pieprasījumam, izmantojot Framework nodrošināto ControllerContext objektu un izsauc vai nu RedirectPermanent() metodi, vai Redirect() metodi (tas ir tieši tas, kas tika darīts IController zema līmeņa ieviešanas piemērā, kas minēts iepriekš rakstā).

    CustomRedirectResult klases izmantošana ir parādīta tālāk esošajā piemērā, kurā parādītas izmaiņas, kas tika veiktas atvasinātajā kontrollerī:

    // ... izmantojot ControllersAndActions.Infrastructure; namespace ControllersAndActions.Controllers ( publiska klase DerivedController: Controller ( public ActionResult Index() ( // ... ) public ActionResult ProduceOutput() ( if (Server.MachineName == "MyMachineName") atgriež jaunu CustomRedirectResult ( Url = "/Basic Indekss" ); else ( Response.Write("Controller: Derived, Darbības metode: ProduceOutput"); return null; ) ) )

    Ņemiet vērā, ka mēs bijām spiesti mainīt darbības metodes rezultātu, lai atgrieztu ActionResult. Mēs atgriežam nulli, ja nevēlamies, lai MVC Framework kaut ko darītu, kad tiek izpildīta mūsu darbības metode, ko mēs darījām, ja CustomRedirectResult instance netika atgriezta.

    Vienību testēšanas kontrolieri un darbības

    Daudzas MVC Framework daļas ir izstrādātas, lai atvieglotu vienību testēšanu, un tas jo īpaši attiecas uz darbībām un kontrolieriem. Šim atbalstam ir vairāki iemesli:

    Varat pārbaudīt darbības un kontrolierus ārpus tīmekļa servera. Konteksta objektiem var piekļūt, izmantojot to bāzes klases (piemēram, HttpRequestBase), ko ir viegli izsmiet.

    Lai pārbaudītu darbības metodes rezultātus, jums nav jāparsē HTML marķējums. Lai nodrošinātu gaidīto rezultātu saņemšanu, varat pārbaudīt atgriezto ActionResult objektu.

    Klientu pieprasījumu emulācija nav nepieciešama. MVC Framework modeļu saistīšanas sistēma ļauj rakstīt darbības metodes, kas saņem ievadi savos parametros. Lai pārbaudītu darbības metodi, vienkārši izsauciet to tieši un norādiet atbilstošās parametru vērtības.

    Turpmākajos rakstos par datu ģenerēšanu no kontrolleriem tiks parādīts, kā izveidot vienību testus dažāda veida darbību rezultātiem.

    Neaizmirstiet, ka vienību pārbaude ir tikai daļa no attēla. Sarežģīta uzvedība lietojumprogrammā notiek, ja darbības metodes tiek izsauktas secīgi. Vienību testēšana vislabāk darbojas, ja to apvieno ar citām testēšanas metodēm.

    Tagad, kad zināt, kā darbojas īpašais novirzīšanas darbības rezultāts, varat pārslēgties uz tā ekvivalentu, ko piedāvā MVC ietvars, kas ir jaudīgāks un ir rūpīgi pārbaudīts Microsoft. Nepieciešamās izmaiņas atvasinātajā kontrollerī ir norādītas zemāk:

    // ... public ActionResult ProduceOutput() ( atgriezt jaunu RedirectResult("/Basic/Index"); ) // ...

    Nosacījuma priekšraksts ir noņemts no darbības metodes, kas nozīmē, ka pēc lietojumprogrammas palaišanas un pāriešanas uz URL, piemēram, /Derived/ProduceOutput, pārlūkprogramma tiks novirzīta uz vietrādi URL, piemēram, /Basic/Index. Lai vienkāršotu darbības metodes kodu, Controller klasē ir iekļautas ērtas metodes dažāda veida ActionResult objektu ģenerēšanai. Piemēram, mēs varam sasniegt tādu pašu efektu kā iepriekš minētajā piemērā, atgriežot Redirect() metodes rezultātu:

    // ... public ActionResult ProduceOutput() ( return Redirect("/Basic/Index"); ) // ...

    Darbību rezultātu sistēmā nav nekā īpaši sarežģīta, taču tā galu galā palīdz izveidot vienkāršāku, tīrāku, konsekventāku kodu, ko ir viegli nolasīt un pārbaudīt. Piemēram, novirzīšanas gadījumā varat vienkārši pārbaudīt, vai darbības metode atgriež RedirectResult instanci, kuras rekvizīts URL satur paredzamo mērķi.

    MVC Framework definē daudzus iebūvētos darbību rezultātu veidus, kas ir aprakstīti tālāk esošajā tabulā.

    Iebūvētie ActionResult veidi Tips Apraksts Controller klases palīgmetodes
    Skatīt rezultātu

    Renderē norādīto vai standarta skata veidni

    Skatīt()
    PartialViewResult

    Renderē norādīto vai standarta daļēja skata veidni

    Daļējs skats()
    RedirectToRouteResult

    Izdod HTTP 301 vai 302 novirzīšanu uz darbības metodi vai norādītu maršruta ierakstu, ģenerējot URL atbilstoši maršrutēšanas konfigurācijai

    RedirectToAction()
    RedirectToActionPermanent()
    RedirectToRoute()
    RedirectToRoutePermanent()
    RedirectResult

    Izdod HTTP 301 vai 302 novirzīšanu uz norādīto URL

    Novirzīt ()
    RedirectPermanent()
    Saturs Rezultāts

    Atgriež pārlūkprogrammā neformatētus teksta datus, papildus iestatot satura tipa galveni

    Saturs()
    FailsResult

    Pārsūta bināros datus (piemēram, failu diskā vai baitu masīvu atmiņā) tieši uz pārlūkprogrammu

    Fails()
    JsonResult

    Serializē .NET objektu JSON formātā un nosūta to kā atbildi. Šāda veida atbildes biežāk tiek ģenerētas, izmantojot Web API un AJAX rīkus

    Json()
    JavaScriptResult

    Nosūta JavaScript pirmkoda daļu, kas jāizpilda pārlūkprogrammai

    JavaScript()
    HttpUnauthorizedResult

    Iestata HTTP atbildes statusa kodu uz 401 (kas nozīmē "nav autorizēts"), kā rezultātā tiek ieviests autentifikācijas mehānisms (veidlapu autentifikācija vai Windows autentifikācija), lai apmeklētājs tiek aicināts pierakstīties.

    HttpNotFoundResult

    Atgriež HTTP kļūdas kodu 404 — nav atrasts

    HttpNotFound()
    HttpStatusCodeResult

    Atgriež norādīto HTTP kodu

    EmptyResult

    Neko nedarot

    Visi šie veidi ir atvasināti no ActionResult klases, un daudziem no tiem Controller klasē ir ērtas palīgmetodes. Šo rezultātu veidu izmantošanu mēs parādīsim turpmākajos rakstos.

    Pieņemsim, ka mums ir jāiegūst dati no vietnes, kuras manuāla vākšana ir nepraktiska vai neiespējama tās apjoma dēļ. Šajā gadījumā mēs varam automatizēt procesu, izmantojot tālāk aprakstītos rīkus.

    pieprasījumu bibliotēka

    Python bibliotēka pieprasījumu veikšanai serverim un atbilžu apstrādei. Parsēšanas skripta pamats un mūsu galvenais ierocis. Izmantojot šo bibliotēku, mēs saņemam lapas saturu html formātā turpmākai parsēšanai.

    importa pieprasījumu atbilde = pieprasījumi. saņemt ("https://ya.ru" ) # get-request print (response . text ) # izvades lapas saturs payload = ( "key1" : "value1" , "key2" : "value2" ) atbilde = pieprasījumi . get ("http://http://httpbin.org/get" , params = slodze ) # pieprasījums ar parametriem headers = ( "user-agent" : "my-app/0.0.1" ) atbilde = pieprasījumi . get (url, headers = headers) # pieprasījums ar konkrētām html galvenēm

    API

    Lietojumprogrammu interfeiss - lietojumprogrammu programmēšanas interfeiss, ko nodrošina tīmekļa lietojumprogrammas īpašnieks citiem izstrādātājiem. Mūsu vajadzībām apmierinošas API trūkums ir pirmā lieta, par ko mums jāpārliecinās, pirms steidzamies analizēt lapas avota kodu un rakstīt tam parsētāju. Daudzām populārām vietnēm ir sava API un dokumentācija, kas izskaidro, kā to izmantot. Api varam izmantot šādā veidā - veidojam http pieprasījumu atbilstoši dokumentācijai, un saņemam atbildi, izmantojot pieprasījumus.

    BS4

    Beautifulsoup4 ir bibliotēka html un xml dokumentu parsēšanai. Ļauj tieši piekļūt jebkuru HTML tagu saturam.

    no bs4 importa BeautifulSoup zupa = BeautifulSoup (raw_html, "html.parser" ) print (zupa . atrast ( "p" , class_ = "some-class" ) . teksts ) # izvada taga "p" saturu ar klasi "kaut kāda klase"

    Selēna tīmekļa draiveris

    Datus vietnē var ģenerēt dinamiski, izmantojot JavaScript. Šajā gadījumā šos datus nevarēs parsēt, izmantojot pieprasījumus+bs4. Fakts ir tāds, ka bs4 parsē lapas avota kodu, neizpildot js. Lai izpildītu js kodu un iegūtu lapu, kas ir identiska tai, kuru mēs redzam pārlūkprogrammā, varat izmantot selēna tīmekļa draiveri - tas ir dažādu pārlūkprogrammu draiveru komplekts, kas tiek nodrošināts ar bibliotēkām darbam ar šiem draiveriem.

    Ko darīt, ja ir atļauja?

    sesija = pieprasījumi.Sesijas() dati = ("pieteikšanās_lietotājvārds":"pieteikšanās", "pieteikšanās_parole":"parole") url = "http://site.com/login.php" atbilde = session.post(url, dati =dati)

    Ko darīt, ja vietne jūs aizliedz pārāk daudz pieprasījumu dēļ?
    • Iestatīt aizkavi starp pieprasījumiem:

    atbilde = requests.get(url, timeout=(10, 0.01)) # savienojuma taimauts, lasīšanas taimauts (sekundēs)

    • Izliecieties par pārlūkprogrammu, kas izmanto selēna tīmekļa draiveri vai nodod lietotāja aģenta galvenes saturu, veicot pieprasījumu:

    user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) " "Gecko/20100101 Firefox/50.0") pieprasījums = requests.get(url, headers=("Lietotāja aģents": lietotāja_aģents))

    • Izmantojiet starpniekserveri: