объбд | упдетцбойе | чретед

9 Пртедемеойс нефпдпч (Method Definitions).

Обвпт пвэйи нефпдпч дмс HTTP/1.1 ртйчпдйфус ойце. Ипфс ьфпф обвпт нпцеф вщфш тбуыйтео, оемшъс уюйфбфш, юфп дпрпмойфемшоще нефпдщ йнеаф пдйооблпчха уенбофйлх, еумй пой счмсафус тбуыйтеойснй тбъощи лмйеофпч й уетчетпч.

Рпме ъбзпмпчлб ъбртпуб Host (тбъдем 14.23) ДПМЦОП упртпчпцдбфш чуе HTTP/1.1 ъбртпущ.

9.1 Веъпрбуоще й Idempotent нефпдщ.

9.1.1 Веъпрбуоще нефпдщ.

Ртпзтбннйуфбн умедхеф рпойнбфш, юфп ртпзтбннопе пвеуреюеойе ртй чъбйнпдекуфчйй у Йофетоефпн ртедуфбчмсеф рпмшъпчбфемс, й ртпзтбнне умедхеф йожптнйтпчбфш рпмшъпчбфемс п мавщи декуфчйси, лпфптще по нпцеф ртпйъчеуфй, оп лпфптще нпзхф йнефш оертедулбъхенпе ъобюеойе дмс оезп ймй дтхзйи мйг.

Ч юбуфопуфй вщмп ртйосфп упзмбыеойе, юфп нефпдщ GET й HEAD ойлпздб ое дпмцощ йнефш йопзп ъобюеойс, лтпне ъбзтхълй. Ьфй нефпдщ умедхеф тбуунбфтйчбфш лбл "веъпрбуоще". Ьфп рпъчпмсеф бзеофбн рпмшъпчбфемс ртедуфбчмсфш дтхзйе нефпдщ, фблйе лбл POST, PUT й DELETE, фблйн пвтбъпн, юфпвщ рпмшъпчбфемш вщм ртпйожптнйтпчбо п фпн, юфп по ъбртбыйчбеф чщрпмоеойе рпфеогйбмшоп прбуопзп декуфчйс.

Еуфеуфчеооп, ое чпънпцоп збтбофйтпчбфш, юфп уетчет ое зеоетйтхеф рпвпюоще ьжжелфщ ч теъхмшфбфе чщрпмоеойс ъбртпуб GET; жблфйюеулй, оелпфптще дйобнйюеулйе теухтущ упдетцбф фблха чпънпцопуфш. Чбцопе тбъмйюйе ъдеуш ч фпн, юфп ое рпмшъпчбфемш ъбртбыйчбеф рпвпюоще ьжжелфщ, й, умедпчбфемшоп, рпмшъпчбфемш ое нпцеф оеуфй пфчефуфчеоопуфш ъб ойи.

9.1.2 Idempotent нефпдщ.

Нефпдщ нпзхф фблце пвмбдбфш учпкуфчпн "idempotence" ч фпн унщуме, юфп рпвпюоще ьжжелфщ пф N > 0 йдеофйюощи ъбртпупч фблйе це, лбл пф пдйопюопзп ъбртпуб (ъб йулмаюеойе пыйвпл й ртпвмен хуфбтечбойс). Нефпдщ GET, HEAD, PUT й DELETE пвмбдбаф дбоощн учпкуфчпн.

9.2 OPTIONS.

Нефпд OPTIONS ртедуфбчмсеф ъбртпу йожптнбгйй пв пргйси упедйоеойс, дпуфхрощи ч герпюле ъбртпупч/пфчефпч, йдеофйжйгйтхенпк ъбртбыйчбенщн URI (Request-URI). Ьфпф нефпд рпъчпмсеф лмйеофх пртедемсфш пргйй й/ймй фтевпчбойс, учсъбооще у теухтупн, ймй чпънпцопуфснй уетчетб, оп ое ртпйъчпдс ойлблйи декуфчйк обд теухтупн й ое йойгййтхс езп ъбзтхълх.

Еумй пфчеф уетчетб - ьфп ое уппвэеойе пв пыйвле, фп пфчеф ОЕ ДПМЦЕО упдетцбфш йопк йожптнбгйй пв®елфб, лтпне фпк, лпфптха нпцоп тбуунбфтйчбфш лбл пргйй упедйоеойс (обртйнет Allow - нпцоп тбуунбфтйчбфш лбл пргйа упедйоеойс, б Content-Type - оеф). Пфчефщ об ьфпф нефпд ое льыйтхафус.

Еумй ъбртбыйчбенщк URI (Request-URI) - ъчеъдпюлб ("*"), фп ъбртпу OPTIONS ртедобъобюео дмс пвтбэеойс л уетчетх ч гемпн. Еумй лпд упуфпсойс ч пфчефе - 200, фп пфчефх УМЕДХЕФ упдетцбфш мавще рпмс ъбзпмпчлб, лпфптще хлбъщчбаф пргйпобмшоще чпънпцопуфй, тебмйъхенще уетчетпн (обртйнет, Public), члмаюбс мавще тбуыйтеойс, ое пртедемеооще дбоопк урегйжйлбгйек, ч дпрпмоеойе л уппфчефуфчхаэйн пвэйн рпмсн ймй рпмсн ъбзпмпчлб пфчефб (response-header). Лбл прйубоп ч тбъдеме 5.1.2, ъбртпу "OPTIONS *" нпцеф вщфш ртйнеоео юетеъ ртплуй-уетчет у пртедемеойен бдтеухенпзп уетчетб ч ъбртбыйчбенпн URI (Request-URI) у рхуфщн рхфен.

Еумй ъбртбыйчбенщк URI (Request-URI) ое ъчеъдпюлб ("*"), фп ъбртпу OPTIONS ртйнеосефус л пргйсн, лпфптще дпуфхрощ ртй упедйоеойй у хлбъбоощн теухтупн. Еумй лпд упуфпсойс пфчефб - 200, фп пфчефх УМЕДХЕФ упдетцбфш мавще рпмс ъбзпмпчлб, лпфптще хлбъщчбаф пргйпобмшоще чпънпцопуфй, тебмйъхенще уетчетпн й ртйнеойнще л хлбъбоопнх теухтух (обртйнет, Allow), члмаюбс мавще тбуыйтеойс, ое пртедемеооще дбоопк урегйжйлбгйек, ч дпрпмоеойе л уппфчефуфчхаэйн пвэйн рпмсн ймй рпмсн ъбзпмпчлб пфчефб (response-header). Еумй ъбртпу OPTIONS ретедбефус юетеъ ртплуй-уетчет, фп рпумедойк тедблфйтхеф пфчеф, йулмаюбс фе пргйй, лпфптще ое ртедхунпфтеощ чпънпцопуфй ьфпзп ртплуй-уетчетб.

9.3 GET.

Нефпд GET рпъчпмсеф рпмхюбфш мавха йожптнбгйа (ч жптне пв®елфб), йдеофйжйгйтпчбооха ъбртбыйчбенщн URI (Request-URI). Еумй ъбртбыйчбенщк URI (Request-URI) пвтбэбефус л ртпгеуух, ртпйъчпдсэенх дбооще, фп ч лбюеуфче пв®елфб пфчефб дпмцощ вщфш чпъчтбэеощ ртпйъчедеооще дбооще, б ое йуипдощк фелуф ртпгеууб, еумй убн ртпгеуу ое чщчпдйф йуипдощк фелуф.

Тбъмйюбефус "хумпчощк GET" ("conditional GET"), ртй лпфптпн уппвэеойе ъбртпуб члмаюбеф рпмс ъбзпмпчлб If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match, ймй If-Range. Хумпчощк нефпд GET ъбртбыйчбеф ретедбюх пв®елфб, фпмшлп еумй по хдпчмефчптсеф хумпчйсн, прйубоощн ч хумпчощи рпмси ъбзпмпчлб. Хумпчощк нефпд GET ртедобъобюео дмс хнеошыеойс оеохцопк ъбзтхълй уефй, й рпъчпмсеф пвопчмсфш льыйтпчбооще пв®елфщ веъ йурпмшъпчбойс оеулпмшлйи ъбртпупч ймй ретеущмлй дбоощи, хце упитбоеоощи лмйеофпн.

Тбъмйюбефус фблце "юбуфйюощк GET" ("partial GET"), ртй лпфптпн уппвэеойе ъбртпуб члмаюбеф рпме ъбзпмпчлб Range. Юбуфйюощк GET ъбртбыйчбеф ретедбюх фпмшлп юбуфй пв®елфб, лбл прйубоп ч тбъдеме 14.36. Юбуфйюощк нефпд GET ртедобъобюео дмс хнеошыеойс оеохцопк ъбзтхълй уефй, й рпъчпмсеф упвйтбфш пв®елфщ йъ юбуфек, веъ ретедбюй юбуфек дбоощи, хце упитбоеоощи лмйеофпн.

Пфчеф об ъбртпу GET льыйтхен фпздб й фпмшлп фпздб, лпздб по пфчеюбеф фтевпчбойсн HTTP льыйтпчбойс, прйубоощн ч тбъдеме 13.

9.4 HEAD.

Нефпд HEAD йдеофйюео GET, ъб йулмаюеойен фпзп, юфп уетчет ОЕ ДПМЦЕО чпъчтбэбфш ч пфчефе фемп уппвэеойс (message-body). Нефбйожптнбгйй, упдетцбэекус ч HTTP ъбзпмпчлби пфчефб об ъбртпу HEAD УМЕДХЕФ вщфш йдеофйюопк йожптнбгйй, ртедуфбчмсенпк ч пфчеф об ъбртпу GET. Ьфпф нефпд нпцеф йурпмшъпчбфшус дмс рпмхюеойс нефбйожптнбгйй пв пв®елфе ъбртпуб веъ оерпутедуфчеоопк ретеущмлй фемб пв®елфб (entity-body). Ьфпф нефпд юбуфп йурпмшъхефус дмс феуфйтпчбойс зйретфелуфпчщи учсъек ч гемси ртпчетлй ртбчймшопуфй, дпуфйцйнпуфй, й чтенеой нпдйжйлбгйй.

Пфчеф об ъбртпу HEAD нпцеф вщфш льыйтхенщн ч фпн унщуме, юфп йожптнбгйс, упдетцбэбсус ч пфчефе нпцеф йурпмшъпчбфшус дмс нпдйжйгйлбгйй ртедчбтйфемшоп льыйтпчбоопзп пв®елфб йъ ьфпзп теухтуб. Еумй опчще ъобюеойс рпмс хлбъщчбаф, юфп льыйтхенщк пв®елф пфмйюбефус пф фелхэезп пв®елфб (рп фблйн рбтбнефтбн, лбл Content-Length, Content-MD5, ETag ймй Last-Modified), фп льы ДПМЦЕО пвтбвбфщчбфш упдетцйнпе лбл ртпутпюеоопе.

9.5 POST.

Нефпд POST йурпмшъхефус дмс ъбртпуб, ртй лпфптпн бдтеухенщк уетчет ртйойнбеф пв®елф, члмаюеоощк ч ъбртпу, лбл опчпе рпдюйоеойе теухтуб, йдеофйжйгйтпчбоопзп ъбртбыйчбенщн URI (Request-URI) ч уфтпле ъбртпуб (Request-Line). POST тбътбвпфбо дмс фпзп, юфпвщ пвэйн нефпдпн тебмйъпчбфш умедхаэйе жхолгйй:

Жблфйюеулй жхолгйс, чщрпмосенбс нефпдпн POST, пртедемсефус уетчетпн й пвщюоп ъбчйуйф пф ъбртбыйчбенпзп URI (Request-URI). Пв®елф, ретедбчбенщк нефпдпн POST, пфопуйфус л ьфпнх URI фблйн це пвтбъпн, лбл жбкм пфопуйфус л лбфбмпзх, ч лпфптпн по обипдйфус, уфбфшс пфопуйфус л лпожетеогйй опчпуфек (newsgroup), ч лпфптпк поб ъбтезйуфтйтпчбоб, б ъбрйуш пфопуйфус л вбъе дбоощи.

Декуфчйе, чщрпмосенпе нефпдпн POST нпцеф ое дбчбфш ч лбюеуфче теъхмшфбфб теухту, лпфптщк нпцоп вщмп вщ йдеофйжйгйтпчбфш URI. Ч ьфпн умхюбе, ч ъбчйуйнпуфй пф фпзп, члмаюбеф мй пфчеф пв®елф, прйущчбаэйк теъхмшфбф, ймй оеф, лпд упуфпсойс ч пфчефе нпцеф вщфш лбл 200 (OK), фбл й 204 (Оеф упдетцйнпзп, No Content).

Еумй теухту вщм упъдбо об ретчпобюбмшопн уетчете, пфчефх УМЕДХЕФ упдетцбфш лпд упуфпсойс 201 (Упъдбо, Created) й члмаюбфш пв®елф, лпфптщк прйущчбеф упуфпсойе ъбртпуб й уущмбефус об опчщк теухту, б фблце ъбзпмпчпл Location (унпфтйфе тбъдем 14.30).

Пфчефщ об ьфпф нефпд ое льыйтхенщ, еумй пфчеф ое члмаюбеф уппфчефуфчхаэйе рпмс ъбзпмпчлб Cache-Control ймй Expires. Пдоблп, пфчеф у лпдпн упуфпсойс 303 (Унпфтефш дтхзпк, See Other) нпцеф йурпмшъпчбфшус дмс ретеобртбчмеойс бзеофб рпмшъпчбфемс дмс ъбзтхълй льыйтхенпзп теухтуб.

Ъбртпущ POST дпмцощ пфчеюбфш фтевпчбойсн ретедбюй уппвэеойс, йъмпцеоощн ч тбъдеме 8.2.

9.6 PUT.

Ъбртпущ у нефпдпн PUT, лпфптще упдетцбф пв®елф, упитбосафус рпд ъбртбыйчбенщн URI (Request-URI). Еумй Request-URI пвтбэбефус л хце ухэеуфчхаэенх теухтух, члмаюеоощк пв®елф УМЕДХЕФ тбуунбфтйчбфш лбл нпдйжйгйтпчбооха четуйа пв®елфб, обипдсэезпус об ретчпобюбмшопн уетчете. Еумй Request-URI ое хлбъщчбеф об ухэеуфчхаэйк теухту, й нпцеф йофетртефйтпчбфшус бзеофпн рпмшъпчбфемс лбл опчщк теухту дмс ъбртпупч, ретчпобюбмшощк уетчет нпцеф упъдбфш теухту у дбоощн URI. Еумй опчщк теухту упъдбо, фп ретчпобюбмшощк уетчет ДПМЦЕО уппвэйфш бзеофх рпмшъпчбфемс пв ьфпн рпутедуфчпн пфчефб у лпдпн упуфпсойс 201 (Упъдбо, Created). Еумй ухэеуфчхаэйк теухту нпдйжйгйтпчбо, фп дмс хлбъбойс хуреыопзп ъбчетыеойс ъбртпуб УМЕДХЕФ рпумбфш пфчеф у лпдпн упуфпсойс мйвп 200 (OK), мйвп 204 (Оеф упдетцйнпзп, No Content). Еумй теухту ое нпцеф вщфш упъдбо ймй йънеоео дмс ъбртбыйчбенпзп URI (Request-URI), фп УМЕДХЕФ рпумбфш пфчеф, пфтбцбаэйк ибтблфет ртпвменщ. Рпмхюбфемш пв®елфб ОЕ ДПМЦЕО йзоптйтпчбфш ъбзпмпчлпч Content-* (обртйнет Content-Range), лпфптщи ое рпойнбеф ймй ое тебмйъхеф, б ДПМЦЕО ч дбоопн умхюбе чпъчтбфйфш пфчеф у лпдпн упуфпсойс 501 (Ое тебмйъпчбоп, Not Implemented).

Еумй ъбртпу ретедбефус юетеъ льы й ъбртбыйчбенщк URI (Request-URI) йдеофйжйгйтхеф пдйо ймй оеулпмшлп льыйтпчбоощи ч обуфпсэее чтенс пв®елфпч, фп чипцдеойс ч льы ьфйи пв®елфпч дпмцощ пвтбвбфщчбфшус лбл ртпутпюеооще. Пфчефщ об ьфпф нефпд ое льыйтхенщ.

Жходбнеофбмшопе тбъмйюйе нецдх POST й PUT ъбртпубнй, пфтбцеоп ч тбъмйюопн ъобюеойй ъбртбыйчбенпзп URI (Request-URI). URI ч ъбртпуе POST йдеофйжйгйтхеф теухту, лпфптщк пвтбвбфщчбеф члмаюеоощк пв®елф. Ьфйн теухтупн нпцеф вщфш ртпгеуу, ртйойнбаэйк дбооще, ымаъ л оелпфптпнх дтхзпнх ртпфплпмх, ймй пфдемшощк пв®елф, лпфптщк ртйойнбеф боопфбгйй (accepts annotations). Обртпфйч, URI ч ъбртпуе PUT йдеофйжйгйтхеф пв®елф, члмаюеоощк ч ъбртпу - бзеоф рпмшъпчбфемс объобюбеф дбоощк URI члмаюеоопнх теухтух, б уетчет ОЕ ДПМЦЕО рщфбфшус ртйнеойфш ъбртпу л оелпфптпнх дтхзпнх теухтух. Еумй уетчет цембеф ртйнеойфш ъбртпу л дтхзпнх URI, по ДПМЦЕО рпумбфш пфчеф у лпдпн 301 (Ретенеэео рпуфпсооп, Moved Permanently); бзеоф рпмшъпчбфемс НПЦЕФ ъбфен ртйосфш упвуфчеоопе теыеойе пфопуйфемшоп ретеобъобюеойс ъбртпуб.

Пдйопюощк теухту НПЦЕФ вщфш йдеофйжйгйтпчбо оеулпмшлйнй тбъмйюощнй URI. Обртйнет, уфбфшс нпцеф йнефш URI йдеофйжйгйтхаэйк "фелхэха четуйа", лпфптщк пфмйюео пф URI, йдеофйжйгйтхаэезп лбцдха урегйжйюеулха четуйа. Ч ьфпн умхюбе, ъбртпу PUT об пвэйк URI нпцеф пфтбъйфшус (may result) об оеулпмшлйи дтхзйи URI, пртедемеоощи уетчетпн ртпйуипцдеойс.

HTTP/1.1 ое пртедемсеф лблйн пвтбъпн нефпд PUT чпъдекуфчхеф об упуфпсойе ретчпобюбмшопзп уетчетб.

Ъбртпущ PUT дпмцощ рпдюйосфшус фтевпчбойсн ретедбюй уппвэеойк, йъмпцеоощн ч тбъдеме 8.2.

9.7 DELETE.

Нефпд DELETE ъбртбыйчбеф ретчпобюбмшощк уетчет пв хдбмеойй теухтуб, йдеофйжйгйтхенпзп ъбртбыйчбенщн URI (Request-URI). Ьфпф нефпд НПЦЕФ вщфш пфнеоео юемпчеюеулйн чнеыбфемшуфчпн (ймй дтхзйнй утедуфчбнй) об ретчпобюбмшопн уетчете. Лмйеофх оемшъс збтбофйтпчбфш, юфп претбгйс вщмб чщрпмоеоб, дбце еумй лпд упуфпсойс, чпъчтбэеоощк ретчпобюбмшощн уетчетпн хлбъщчбеф об фп, юфп декуфчйе вщмп ъбчетыеоп хуреыоп. Пдоблп, уетчетх ОЕ УМЕДХЕФ пфчеюбфш пв хуреыопн чщрпмоеойй, еумй чп чтенс пфчефб по ртедрпмбзбеф хдбмйфш теухту ймй ретенеуфйфш езп ч оедпуфхропе рпмпцеойе.

Хуреыопнх пфчефх УМЕДХЕФ йнефш лпд упуфпсойс 200 (OK), еумй пфчеф члмаюбеф пв®елф, прйущчбаэйк упуфпсойе, мйвп йнефш лпд упуфпсойс 202 (Ртйосфп, Accepted), еумй декуфчйе еэе ое вщмп ртпйъчедеоп, мйвп йнефш лпд упуфпсойс 204 (Оеф упдетцйнпзп, No Content), еумй пфчеф уппвэбеф пв хуреие (OK), оп ое упдетцйф пв®елфб.

Еумй ъбртпу ретедбефус юетеъ льы й ъбртбыйчбенщк URI (Request-URI) йдеофйжйгйтхеф пдйо ймй оеулпмшлп льыйтпчбоощи ч обуфпсэее чтенс пв®елфпч, фп чипцдеойс йи дпмцощ пвтбвбфщчбфшус лбл ртпутпюеооще. Пфчефщ об ьфпф нефпд ое льыйтхенщ.

9.8 TRACE.

Нефпд TRACE йурпмшъхефус дмс чщъпчб хдбмеоопзп чпъчтбфб уппвэеойс ъбртпуб об хтпчое ртймпцеойс. Лпоеюопнх рпмхюбфема ъбртпуб УМЕДХЕФ пфтбъйфш рпмхюеоопе уппвэеойе пвтбфоп лмйеофх лбл фемп пв®елфб пфчефб у лпдпн упуфпсойс 200 (OK). Лпоеюощн рпмхюбфемен счмсефус мйвп уетчет ртпйуипцдеойс, мйвп ретчщк ртплуй-уетчет, мйвп ретчщк ымаъ, рпмхюйчыйк охмечпе ъобюеойе (0) ч рпме Max-Forwards ч ъбртпуе (ун. тбъдем 14.31). Ъбртпу TRACE ОЕ ДПМЦЕО упдетцбфш пв®елфб.

TRACE рпъчпмсеф лмйеофх чйдефш, юфп рпмхюбефус об дтхзпн лпоге герпюлй ъбртпупч й йурпмшъпчбфш ьфй дбооще дмс феуфйтпчбойс ймй дйбзопуфйюеулпк йожптнбгйй. Ъобюеойе рпмс ъбзпмпчлб Via (тбъдем 14.44) ртедуфбчмсеф пупвщк йофетеу, фбл лбл поп декуфчхеф лбл умед герпюлй ъбртпупч. Йурпмшъпчбойе рпмс ъбзпмпчлб Max-Forwards рпъчпмсеф лмйеофх пзтбойюйчбфш дмйох герпюлй ъбртпупч, юфп счмсефус рпмеъощн ртй феуфйтпчбойй веулпоеюощи гйлмпч ч герпюле ртплуй-уетчетпч, ретеущмбаэйи уппвэеойс.

Еумй ъбртпу хуреыоп чщрпмоео, фп пфчефх УМЕДХЕФ упдетцбфш чуе уппвэеойе ъбртпуб ч феме пв®елфб (entity-body), б Content-Type умедхеф вщфш тбчощн "message/http". Пфчефщ об ьфпф нефпд ОЕ ДПМЦОЩ льыйтпчбфшус.


Copyright  ©  1998 Alex Simonoff (http://www.omsk.com/Leshik/), All Rights Reserved.


объбд | упдетцбойе | чретед