POST ãªã¯ã¨ã¹ãã¡ã½ãã
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
POST 㯠HTTP ã®ã¡ã½ããã§ããµã¼ãã¼ã«ãã¼ã¿ãéä¿¡ãã¾ãããªã¯ã¨ã¹ãã®æ¬ä½ã®å㯠Content-Type ãããã¼ã§ç¤ºããã¾ãã
PUT 㨠POST ã¨ã®éãã¯ã PUT ãã¹ãçã§ãããã¨ã§ããä¸åº¦å¼ã³åºãã¦ãè¤æ°åå¼ã³åºãã¦ãæåããã°åã广ã«ãªãã¾ãï¼å¯ä½ç¨ãããã¾ããï¼ã
åä¸ã® POST ãªã¯ã¨ã¹ããé£ç¶ãã¦éä¿¡ããã¨ãåãæ³¨æãè¤æ°å使ãããªã©ã追å ã®å¹æãæã¤ãã¨ãããã¾ãã
HTML ãã©ã¼ã ã¯ããµã¤ããã¼ã¿ã POST ãç¨ãã¦éä¿¡ããããããµã¤ããµã¼ãã¼ã«å¤åãããããã¾ãã
HTML ãã©ã¼ã ã«ããã¦ãæ¬ä½ã³ã³ãã³ãã®å½¢å¼/ã¨ã³ã³ã¼ãæ¹å¼ã¯ã<form> è¦ç´ ã® enctype屿§ã¾ã㯠<input> ã¾ã㯠<button> è¦ç´ ã®formenctype屿§ã«ãã£ã¦æ±ºå®ããã¾ãã
ã¨ã³ã³ã¼ãã¯æ¬¡ã®ããããã«ãªããã¨ãããã¾ãã
application/x-www-form-urlencoded: ãã¼ã¨å¤ã¯ãã¢ã³ããµã³ãï¼&ï¼ã§å¥åã®ãã¼ã¨å¤ã®ãã¢ï¼ãã¼-å¤ã¿ãã«ï¼ã¨ãã¦ã¨ã³ã³ã¼ãããããã¼ã¨å¤ã®éã«ã¯çå·ï¼=ï¼ãã¤ãããã¾ãï¼ä¾ï¼first-name=Frida&last-name=Kahloï¼ã ãã¼ã¨å¤ã®ä¸¡æ¹ã«ããè±æ°å以å¤ã®æåã¯ãã¼ã»ã³ãã¨ã³ã³ã¼ãããã¾ãããã®ããããã®åã¯ãã¤ããªã¼ãã¼ã¿ã«ã¯é©ãã¦ãããããã®ãããªç¨éã«multipart/form-dataã使ç¨ãã¾ããããmultipart/form-data: ããããã®å¤ã¯ãã¼ã¿ã®ããã㯠("body part") ã¨ãã¦éä¿¡ãããã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããå®ç¾©ããããªãã¿ã¼ï¼boundary="delimiter12345"ãªã©ï¼ãããããã®é¨åãåºåãã¾ãã ãã¼ã¯ããããã®é¨åã®Content-Dispositionãããã¼ã®ä¸ã§ä¸ãããã¾ããtext/plain
POST ãªã¯ã¨ã¹ãã fetch() ãªã©ãHTML ãã©ã¼ã 以å¤ã®æ¹æ³ã§éä¿¡ãããå ´åã¯ãæ¬ä½ã¯ããããåã使ããã¨ãã§ãã¾ããHTTP 1.1 仿§æ¸ã§è¨è¿°ããã¦ããéãã POST ã¯ä»¥ä¸ã®ãããªæ©è½ãã«ãã¼ããçµ±ä¸çãªã¡ã½ããã«ãªãããè¨è¨ããã¦ãã¾ãã
- æ¢åã®ãªã½ã¼ã¹ã®æ³¨é
- æ²ç¤ºæ¿ããã¥ã¼ã¹ã°ã«ã¼ããã¡ã¼ãªã³ã°ãªã¹ããåã¯åæ§ã®è¨äºã°ã«ã¼ãã¸ã®æç¨¿
- ãµã¤ã³ã¢ããã¢ã¼ãã«ããã®æ°è¦ã¦ã¼ã¶ã¼ã®è¿½å
- ãã©ã¼ã ã®éä¿¡çµæãªã©ã«ãããããã¼ã¿ãæ±ãããã»ã¹ã¸ã®ãã¼ã¿ãããã¯ã®åãæ¸¡ã
- è¿½å æä½ã«ãããã¼ã¿ãã¼ã¹ã®æ¡å¼µ
| ãªã¯ã¨ã¹ãã®æ¬ä½ | ãã |
|---|---|
| æåæã®ã¬ã¹ãã³ã¹ã®æ¬ä½ | ãã |
| å®å ¨æ§ | ãªã |
| ã¹ãçæ§ | ãªã |
| ãã£ãã·ã¥ | 鮮度ãè¡¨ãæ å ±ãå«ã¾ãã¦ããå ´åã®ã¿å¯è½ |
| HTML ãã©ã¼ã ã§ã®å©ç¨ | å¯ |
æ§æ
POST <request-target>["?"<query>] HTTP/1.1
<request-target>-
Hostãããã¼ã§æå®ãããæ å ±ã¨çµã¿åããã¦ããªã¯ã¨ã¹ãã®å¯¾è±¡ãªã½ã¼ã¹ãç¹å®ãã¾ãã ããã¯ãªãªã¸ã³ãµã¼ãã¼ã¸ã®ãªã¯ã¨ã¹ãã§ã¯çµ¶å¯¾ãã¹ï¼ä¾:/path/to/file.htmlï¼ã§ããããããã·ã¼ã¸ã®ãªã¯ã¨ã¹ãã§ã¯çµ¶å¯¾ URLï¼ä¾:http://www.example.com/path/to/file.htmlï¼ã§ãã <query>çç¥å¯-
çå符
?ã§å§ã¾ããªãã·ã§ã³ã®ã¯ã¨ãªæåã å¤ãã®å ´åãkey=valueã¨ããå½¢ã§è奿 å ±ãä¼éããããã«ä½¿ç¨ããã¾ãã
ä¾
>URL ã¨ã³ã³ã¼ãããããã©ã¼ã éä¿¡
application/x-www-form-urlencoded ã³ã³ãã³ãã¨ã³ã³ã¼ãã£ã³ã°ï¼ããã©ã«ãï¼ã使ç¨ãããã©ã¼ã ã¯ãä¸è¨ã®ããã«ãkey=value ãã¢ã§æ§æããããã©ã¼ã ãã¼ã¿ã & è¨å·ã§åºåã£ã¦æ¬ä½ã«å«ãããªã¯ã¨ã¹ããéä¿¡ãã¾ãã
POST /test HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
ãã«ããã¼ãã®ãã©ã¼ã éä¿¡
multipart/form-data ã¨ã³ã³ã¼ãã£ã³ã°ã¯ããã©ã¼ã ã«ãã¡ã¤ã«ã大éã®ãã¼ã¿ãå«ã¾ããå ´åã«ä½¿ç¨ããã¾ãã
ãã®ãªã¯ã¨ã¹ãæ¬ä½ã¯ãå¢çæååã使ç¨ãã¦ãã©ã¼ã ã®ããããã®é¨åãåºåãã¾ãã
ãã®å½¢å¼ã®ãªã¯ã¨ã¹ãã®ä¾ã示ãã¾ãã
POST /test HTTP/1.1
Host: example.com
Content-Type: multipart/form-data;boundary="delimiter12345"
--delimiter12345
Content-Disposition: form-data; name="field1"
value1
--delimiter12345
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--delimiter12345--
Content-Disposition ãããã¼ã¯ããã©ã¼ã ãã¼ã¿ãã©ã®ããã«å¦çãã¹ããã示ããå¿
è¦ã«å¿ã㦠name ã filename ã®ãã£ã¼ã«ããæå®ãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| HTTP Semantics > # POST > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- HTTP ãªã¯ã¨ã¹ãã¡ã½ãã
- HTTP ã¬ã¹ãã³ã¹ã¹ãã¼ã¿ã¹ã³ã¼ã
- HTTP ãããã¼
Content-Typeãããã¼Content-Dispositionãããã¼GETã¡ã½ãã