Ші дәріс. Программалық қосымшалардың ақпараттық өзара қатынас интерфейсі
HTTP мысалында программалық қосымшалардың өзара қатынас интерфейсі. Сұраныстар мен жауаптарды тасымалдануы.
HTTP мысалында программалық қосымшалардың өзара қатынас интерфейсін қарастырамыз. Интерфейс тізбектеліп орындалады.
Бірінші кезең - HTTP клиенті (броузер) сервермен қосылғанда. Бұл үшін ол TCP/IP протоколын қолданады және байланыс клиентке белгілі TCP портпен қосылады. Порттың қабылданған нөмірі – 80; басқа сервистерге басқа TCP – порттар белгіленген.
Екінші кезең - клиентің сұранысы болып табылады: клиент сұраныстың тақырыбын жібереді (Request header) және мүмкін (әдісіне байланысты) сұраныс хабарламасының денесін де жіберуі мүмкін. Тақырыбында міндетті түрде тәсілі, URL және HTTP версиясы көрсетіледі. Ол жерде тағы да міндетті емес жолдар бар болуы мүмкін, олар да серверге сұраныс қалай өңделіп отырғаны туралы ақпарат береді.
Үшінші кезең - сервердің жауабы, ол тақырыптан (Response header) тұрады. Ол жерде сервер НТТР версиясын және статус кодын көрсетеді. Ол нәтиженің дұрыс немесе дұрыс еместігін және оның себебін көрсетеді. Тақырыптан кейін, бос жолмен бөлінген жауаптың денесі келеді.
Төртінші кезең - ТСР/ІР қосындысының бүлінуі.
Request header мына түрінде болуы мүмкін:
GET /MyDoc.htm HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/3.0 (Win95; I)
Host: 212.54.196.226
Accept: image/gif, image/x-bitmap,
image/jpeg, *.*
Мұнда:MyDoc.htm - сұраныс құжатының аты; GET- сұраныстың түрі; Host-IP-мекен-жайы; Accept-клиенттің деректер форматы.
Request header алынған құжатының түрі:
POST /Scripts/ReadData.pl HTTP/1.1
Referer: http://212.54.196.226
Connection: Keep Alive
User-Agent: Mozilla/3.0 (Win95; I)
Host: 212.54.196.226
Accept: image/gif, image/x-bitmap,
image/jpeg, *.*
Content-type: application/x-www-form-urlencoded
Content-length: 38
FirstName=Mary+Ann&LastName=Sylvester
Мұнда: POST - формадан берілетін деректердің тасымалдау әдісі. Referer- web- парақтың мекен-жайы, бұл жерден пайдаланушы басқа құжат түріне ауысады; Content-type-берілетін деректердің кодттау тәсілі; Content-length - берілетін деректер саны (байт). FirstName, LastName - форма өрісінің атауы; Mary+Ann, Sylvester – берілетін мәндер (бос орын ”+”таңбасымен ауыстырылған).
Web-сервер броузердің сұранысына жауап береді,оған HTML-құжатын жібереді, Response header осыған қарайды.
Response header құрамында келесі деректер бар:
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Tue, 04 Apr 2005 00:26:34 GMT
Content-type: text/html
Set-Cookie: ASPSESSIONIDFFFYXKFR=ACMNFLJANKGBAMPBEGNGLEAB
<HTML>
{ HTML - код }
Бұл тақырып сервермен құрылған.”200OK”жолы-бұл сұраныс статусы. Егер де сервер сұранысты өңдей алмаса, онда ол қате шықты деген хабарлама шығаратын еді, мысалы”404 Object Not Found”; Content-type-құрамының типі(түрі). Броузер құжатты көрсетеді (оның кодын HTML-коды ретінде интерпретациялайды, өйткені Content- type мәні text/html ие) және қашан клиент (гиперсілтемеге баса) осы сайттың келесі бетіне сұраныс беруін күтеді немесе басқа сайтқа көшеді. Егер бетте бейне болса (мысалы,jpeg форматында), онда ол web-сервермен клиентке басқа Response header-мен жіберіледі, мұнда Content-type, image/jpeg мағнасында болады. Set-Cookie - клиент компьютеріне арнайы ақпарат мәнін орнатады. Бұл өрісте жүріп жатқан жұмыстың идентификаторы сақталады.
Мысал қарастыралық және клиенттің HTTP сұранысын кеңінен қарастыралық.Ол былай болуы мүмкін:
POST http: //localhost/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: localhost
Proxy-Connection: Keep-Alive
paraml=l¶m2=2
Мысалдан сұраныстың “POST” сөзінен басталатыны көрінеді. Бұл сөз серверге берілетін деректердің әдісін көрсетеді. Мұнда сұраныстың қосымша деректері (“param1=1¶m2=2”) тақырыптан кейін беріледі.
HTML құжаттарында деректерді жіберу әдістері хабарлама жіберу формасында көрсетіледі. Мысалы,мына сұраныс алыну үшін,келесі форма қолданылды:
<form action="http://localhost/" method="post">
<input type=hidden name="param1" value="1">
<input type=hidden name="param2" value="2">
<input type=submit></form>
Мысалдан көретініміз, параметр мына түрде жазылады
[1-ші параметр аты]=[ 1-ші параметр мәні]& [2-ші параметр аты]=[ 2-ші параметр мағынасы]&…
”Get” сұраныс әдісі жиі қолданылады. Сұраныстардың көпшілігі, деректерді жіберуді керек етпейтін - мысалы парақ сұранысы, осы әдіспен жүргізіледі. Сұраныс формасын өзгертейік:
<form action="http://localhost/" method="get">
<input type=hidden name="param1" value="1">
<input type=hidden name="param2" value="2">
<input type=submit></form>
получим следующий HTTP запрос:
GET http://localhost/?param1=1¶m2=2 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: localhost
Proxy-Connection: Keep-Alive
Көрініп тұрғандай “param1=1¶m2=2” жолы үстіге ауысады да “?” белгіден кейін, “http://localhost/” жолына қосылды. Сонымен қатар HTTP тақырыбында бірінші сөз өзгерді, қалғаны өзгеріссіз қалды.
GET әдісінің ерекшілігі мынадай: броузер жолынан қандай құжат жіберілген көрінеді. Кемшілігіне: мұндай тәсілмен (POST әдісіне қарағанда) жіберілетін деректердің ұзындығы шектелген – кейбір серверлер, кейбір броузерлер сияқты сұраныс құжатының мекен-жай ұзындығына шектеуі бар. Сәйкесінше, сұраныс жолы ұзын мекен-жай, қысқартылып тасталуы мүмкін немесе сервер қате “414 Request-URI Too Long” бар деп шығарады.
Әдебиет: 1нег.[20-26],2нег.[80-98],7қос.[100-117],9қос.[211-234].
Бақылау сұрақтары:
1. НТТР бойынша қосымшалардың өзара қатынас интерфейсі қанша кезеңнен тұрады?
2. НТТР бойынша қосымшалардың өзара қатынас интерфейсінде Request header тақырыбының мағынасы қандай?
3. НТТР бойынша қосымшалардың өзара қатынас интерфейсінде Response header тақырыбының мағынасы қандай?
4. Пайдаланушы интерфейсті орындайтын компонентер НТТР бойынша қосымшалардың өзара қатынас интерфейсімен қалай байланысады?