Ші дәріс. Программалық қосымшалардың өзара қатынасының ақпараттық интерфейсін орындау.

Сервер мен сыртқы программаның өзара қатынас интерфейсі. Сервер мен сыртқы программаның өзара қатынас интерфейсінің (Common Gateway Interface) орындалуын қарастырайық.

Common Gateway Interface (CGI) ортасының айнымалысы.

Сервер CGI-скрипті (сыртқы программаны) қолданысқа жіберген уақытта қоршаған ортаны қалыптастырады. Онда скрипт HTTP-байланыстар жайында рұқсат етілген барлық ақпаратты, оған қоса сұраныммен алынған шамаларды анықтай алады. Көптеген CGI айнымалылар стандартталған. Ендігі жерде стандартты CGI ортаның айнымалыларын қарастырайық:

REQUEST_METHOD – HTTP сұраныстың әдісін анықтауға арналған басты жолдардың бірі. Жоғарыда айтылып өткендей серверге сұраныс жіберу үшін HTTP протоколы GET және POST әдістерін пайдаланады. Олардың айырмашылығы, GET әдісінде, сұраныс URL-дің бір бөлігі болып табылады (мысалы, http://www.localhost/myscript.cgi?а=request), ал POST әдісін қолданғанда деректер HTTP-шақырылу денесінде жіберіледі (GET әдісінде шақырылу денесі бос болады). Сәйкесінше, CGI үшін: GET әдісінде шақырылу QUERY_STRING айнымалысына барады, ал POST әдісінде скрипті стандартты түрде енгізетін STDIN-ге жіберіледі.

Мысалы: REQUEST_METHOD=GET

QUERY_STRING– GET әдісіндегі шақырылу жолы. Формадан жіберілетін шақырылу броузермен кодталады, себебі URL-де барлық символдар қолдана бермейді (олардың кейбірлері арнайы қолданады). Urlencode әдісі бойынша: URL-дегі барлық бос орын белгілері “+” таңбасына алмастырылады, ал барлық арнайы және баспаға түспейтін таңбалар %hh тізбегіне ауыстырылады, мұндағы hh-таңбаның он алтылық коды. Сонымен қатар, жолдарды бөлуші болып & белгісі табылады, сондықтан формаларды өңдеген уақытта декодтау жүргізу қажет.

Мысалы: QUERY_STRING=name=user+chef&age=20&hobby=games

CONTENT_LENGTH– байт бойынша алынған шақырылудың ұзындығы. POST әдісі бойынша шақырылу жүргізген кезде стандартты кіріс (STDIN) CONTENT_LENGTH жүргізу керек, содан соң оларды өңдеу керек. Әдетте POST әдісімен үлкен ауқымдағы мәтіндерді енгізетін формаларды жіберу тиімді. Осы әдісті қолданғанда ешқандай шектеу жоқ, ал GET әдісінде URL ұзындығы шектеулі.

Мысалы: CONTENT_LENGTH=31

CONTENT_TYPE– шақырылу денесінің түрі (жоғарыда кодталған формалардың түрі келесідей application/x-www-form-urlencoded анықталады).

GATEWAY_INTERFACE – CGI протоколының нұсқасы

Мысал: GATEWAY_INTERFACE=CGI/1.1

REMOTE_ADDR –аталмыш шақырылуды орындайтын, қашықтағы хостың ІР – мекен-жайы.

Мысалы: REMOTE_ADDR=139.142.24.157

REMOTE_HOST –бұл, егер шақырған хостың домендік есімі болса, онда ол айнымалыны қамтиды, қарсы жағдайда ол REMOTE_ADDRсияқты ІР – мекен-жай.

Мысалы: REMOTE_HOST=idsoftware.com

SCRIPT_NAME– шақырылуда қолданған скрипттің есімі. Сервердегі нақты жолды алу үшін SCRIPT_FILENAMEайнымалысы қолданады.

Мысалы: SCRIPT_NAME=/cgi/guestbook.cgi

SCRIPT_FILENAME –бұл сервердегі файл скриптінің есімі. Осы айнымалыны қолдана отырып, файлға физикалық жолды табады.

Мысалы: SCRIPT_FILENAME=/home/public/cgi/guestbook.cgi

SERVER_NAME– сервердің көп жағдайда домендік есімі (www.microsoft.com сияқты), алайда ол IP-мекен-жай болуы да мүмкін (мысалы, 157.151.74.254 түрдегі).

Мысалы: SERVER_NAME=www.tksite.edu

SERVER_PORT –сервердің ТСР-порты, ол байланыс жасау үшін пайдаланады. Келісім бойынша HTTP-порттың нөмірі 80, алайда кейбір жағдайда ол басқа болуы мүмкін.

Мысалы: SERVER_PORT=80

SERVER_PROTOCOL –сервер протоколының нұсқасы

Мысалы: SERVER_PROTOCOL=HTTP/1.1

SERVER_SOFTWARE– сервердің программалық қамтамасы

Мысалы: Apache/1.0

Клиент пен сервер арасындағы өзара қатынас жайлы негізгі ақпарат қоршаған ортаның стандартты айнымалылары арқылы алынады. CGI-сценариін іске қосқан сайын ол бірінші рет жұмыс жасағандай күй кешеді. Әрбір рет инициализация процедурасы басынан бастап жүзеге асады. Кіріс деректерді оқудан бұрын қоршаған орта айнымалысының REQUEST_METHOD мәнін анықтау керек және ол қандай ақпарат қамтиды get немесе post? Содан кейінгі әрекеттер осы мәнге байланысты өзгеріп отырады.

Кіріс деректерді өңдеу нақты бір жолды жазу мақсатына байланысты. Жалпы жағдайда деректерді өңдеу ол түрлендіру деп саналады.

Наши рекомендации