»ó¼¼Á¤º¸
Ã¥¼Ò°³
curl°ú Go ¾ð¾î·Î ¹è¿ì´Â HTTPÀÇ °ú°Å, ÇöÀç, ¹Ì·¡ À¥ ¼¼»óÀ» ÁöÅÊÇÏ´Â HTTP ±â¼úÀÇ º¯Ãµ»ç¿Í ¹öÀüº° ¹®¹ý ¹× Àǹ̷ÐÀ» »ìÆ캸´Â Ã¥ÀÌ´Ù. HTTP 1.0, 1.1À» °ÅÃÄ 2.0±îÁö ºê¶ó¿ìÀú ³»ºÎ¿¡¼ ÀϾ´Â ÀÏ°ú ¼¹ö¿ÍÀÇ »óÈ£ÀÛ¿ë µîÀ» »ðÈ¿Í ¿¹½Ã·Î ¼Ò°³ÇÑ´Ù. curl, Go ¾ð¾î, ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµå ¿¹Á¦·Î º¹Àâ ´Ùº¯ÇÑ HTTP À¥ ±â¼úÀ» ÇÑ ±ÇÀ¸·Î Á¤¸®Çß½À´Ï´Ù. ¸ðµç À¥ °³¹ßÀÚ¿¡°Ô ±ÇÇÑ´Ù.
ÀúÀÚ¼Ò°³
DeNAÀÇ °ÔÀÓ °³¹ßÆÀÀÌ »ç¿ëÇÏ´Â ¶óÀ̺귯¸®¿Í µµ±¸¸¦ °³¹ßÇÏ´Â °³¹ß±â¹ÝÆÀ ¼Ò¼Ó ¿£Áö´Ï¾î. °¡²û ´Ù¸¥ ¿©·¯ ÆÀ¿¡ ¿ëº´À¸·Î ÆİߵȴÙ. ÆÄÀ̽ã, C++, ÀÚ¹Ù½ºÅ©¸³Æ®, Go ¾ð¾î¸¦ ¾÷¹« ¹× Ãë¹Ì·Î ´Ù·é´Ù. À¥Àº ÀϺ¸´Ù´Â Ãë¹Ì¿¡ °¡±õ´Ù. Àú¼·Î ¡ºMithril¡»(¿À¶óÀϸ® ÀúÆÒ, 2015), ¡º±º°ÍÁú °øºÎ¹ý¡», ¡ºMobage¸¦ ÁöÅÊÇÏ´Â ±â¼ú¡»(ÀÌ»ó ±â¼úÆò·Ð»ç¿¡¼ °øÀú), ¿ª¼·Î ¡º¿¢½ºÆÛÆ® Python ÇÁ·Î±×·¡¹Ö¡», ¡ºÆ÷¸ðµµ·Î Å×Å©´Ð ÀÔ¹®¡»(ÀÌ»ó ¾Æ½ºÅ° ¹Ìµð¾î ¿öÅ©½º¿¡¼ °ø¿ª), ¡º¾ÆÆ® ¿Àºê Ä¿¹Â´ÏƼ¡»(¿À¶óÀϸ® ÀúÆÒ, 2011) µîÀÌ ÀÖ´Ù. ÀÌ¿Ü¿¡ ASCII.jp ÇÁ·Î±×·¡¹Ö+ Äڳʿ¡¼ ¡®Go ¾ð¾î¸¦ ÀÌ¿ëÇÑ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö¡¯À» ¿¬ÀçÇß´Ù.
¸ñÂ÷
CHAPTER 1 HTTP/1.0ÀÇ ½ÅÅýº: ±âº»ÀÌ µÇ´Â ³× °¡Áö ¿ä¼Ò 1.1 HTTPÀÇ ¿ª»ç 1.2 HTTP/0.9·Î ÇÒ ¼ö ÀÖ´Â °ÍÀ» ½ÃÇèÇÏ´Ù1.3 HTTP/0.9¿¡¼ 1.0À¸·ÎÀÇ ¿©Á¤ 1.4 HTTPÀÇ Á¶»ó (1) ÀüÀÚ¸ÞÀÏ 1.5 HTTPÀÇ Á¶»ó (2) ´º½º±×·ì 1.6 ¸®µð·ºÆ® 1.7 URL1.8 ¹Ùµð 1.9 ¸¶Ä¡¸çCHAPTER 2 HTTP/1.0ÀÇ ½Ã¸Çƽ½º: ºê¶ó¿ìÀú ±âº» ±â´ÉÀÇ À̸é 2.1 ´Ü¼øÇÑ Æû Àü¼Û(x-www-form-urlencoded)2.2 ÆûÀ» ÀÌ¿ëÇÑ ÆÄÀÏ Àü¼Û2.3 ÆûÀ» ÀÌ¿ëÇÑ ¸®µð·ºÆ® 2.4 ÄÜÅÙÆ® ´Ï°í½Ã¿¡ÀÌ¼Ç 2.5 ÄíÅ° 2.6 ÀÎÁõ°ú ¼¼¼Ç 2.7 ÇÁ·Ï½Ã 2.8 ij½Ã 2.9 ¸®ÆÛ·¯ 2.10 °Ë»ö ¿£Áø¿ë ÄÜÅÙÃ÷ Á¢±Ù Á¦¾î 2.11 ¸¶Ä¡¸ç CHAPTER 3 Go ¾ð¾î¸¦ ÀÌ¿ëÇÑ HTTP/1.0 Ŭ¶óÀ̾ðÆ® ±¸Çö 3.1 Go ¾ð¾î¸¦ ÀÌ¿ëÇÏ´Â ÀÌÀ¯ 3.2 Go ¾ð¾îÀÇ API ±¸¼º 3.3 ÀÌ Àå¿¡¼ ´Ù·ê ·¹½ÃÇÇ 3.4 GET ¸Þ¼µå ¼Û½Å°ú ¹Ùµð, ½ºÅ×ÀÌÅͽº ÄÚµå, Çì´õ ¼ö½Å3.5 GET ¸Þ¼µå Äõ¸® Àü¼Û 3.6 HEAD ¸Þ¼µå·Î Çì´õ °¡Á®¿À±â 3.7 x-www-form-urlencoded Çü½ÄÀÇ POST ¸Þ¼µå Àü¼Û 3.8 POST ¸Þ¼µå·Î ÀÓÀÇÀÇ ¹Ùµð Àü¼Û 3.9 multipart/form-data Çü½ÄÀ¸·Î ÆÄÀÏ Àü¼Û 3.10 ÄíÅ° ¼Û¼ö½Å 3.11 ÇÁ·Ï½Ã ÀÌ¿ë 3.12 ÆÄÀÏ ½Ã½ºÅÛ ¾×¼¼½º 3.13 ÀÚÀ¯·Î¿î ¸Þ¼µå Àü¼Û 3.14 Çì´õ Àü¼Û 3.15 ±¹Á¦È µµ¸ÞÀÎ 3.16 ¸¶Ä¡¸ç CHAPTER 4 HTTP/1.1ÀÇ ½ÅÅýº: °í¼ÓÈ¿Í ¾ÈÀü¼ºÀ» Ãß±¸ÇÑ È®Àå4.1 Åë½Å °í¼ÓÈ4.2 Àü¼Û °èÃþ º¸¾È(TLS)4.3 PUT ¸Þ¼µå¿Í DELETE ¸Þ¼µåÀÇ Ç¥ÁØÈ4.4 OPTIONS, TRACE, CONNECT ¸Þ¼µå Ãß°¡4.5 ÇÁ·ÎÅäÄÝ ¾÷±×·¹À̵å 4.6 °¡»ó È£½ºÆ® Áö¿ø 4.7 ûũ 4.8 ¹Ùµð Àü¼Û È®ÀÎ 4.9 ¸¶Ä¡¸çCHAPTER 5 HTTP/1.1ÀÇ ½Ã¸Çƽ½º: È®ÀåµÇ´Â HTTPÀÇ ¿ëµµ5.1 ÆÄÀÏ ´Ù¿î·Îµå ÈÄ ·ÎÄÿ¡ ÀúÀåÇϱâ 5.2 ´Ù¿î·Îµå Áß´Ü°ú Àç½ÃÀÛ5.3 XMLHttpRequest 5.4 Áö¿À·ÎÄÉÀ̼Ç5.5 X-Powered-By Çì´õ 5.6 ¿ø°Ý ÇÁ·Î½ÃÀú È£Ãâ5.7 WebDAV5.8 À¥»çÀÌÆ® °£ °øÅë ÀÎÁõ ¹× Çã°¡ Ç÷§Æû 5.9 ¸¶Ä¡¸ç CHAPTER 6 Go ¾ð¾î¸¦ ÀÌ¿ëÇÑ HTTP1.1 Ŭ¶óÀ̾ðÆ® ±¸Çö6.1 Keep-Alive6.2 TLS6.3 ÇÁ·ÎÅäÄÝ ¾÷±×·¹À̵å 6.4 ûũ 6.5 ¿ø°Ý ÇÁ·Î½ÃÀú È£Ãâ6.6 ¸¶Ä¡¸ç CHAPTER 7 HTTP/2ÀÇ ½ÅÅýº: ÇÁ·ÎÅäÄÝ ÀçÁ¤ÀÇ 7.1 HTTP/27.2 Fetch API7.3 server-sent events7.4 À¥¼ÒÄÏ7.5 WebRTC7.6 HTTP À¥ Ǫ½Ã7.7 ¸¶Ä¡¸ç CHAPTER 8 HTTP/2ÀÇ ½Ã¸Çƽ½º: »õ·Î¿î È°¿ë »ç·Ê8.1 ¹ÝÀÀÇü µðÀÚÀÎ 8.2 ½Ã¸Çƽ À¥ 8.3 ¿ÀÇ ±×·¡ÇÁ ÇÁ·ÎÅäÄÝ 8.4 AMP8.5 HTTP ¶óÀÌºê ½ºÆ®¸®¹Ö¿¡ ÀÇÇÑ µ¿¿µ»ó ½ºÆ®¸®¹Ö Àç»ý 8.6 MPEG-DASH µ¿¿µ»ó ½ºÆ®¸®¹Ö Àç»ý 8.7 ¸¶Ä¡¸ç CHAPTER 9 Go ¾ð¾î¸¦ ÀÌ¿ëÇÑ HTTP/2, HTML5 ÇÁ·ÎÅäÄÝ ±¸Çö9.1 HTTP/29.2 HTTP/2ÀÇ ¼¹ö Ǫ½Ã 9.3 server-sent events9.4 À¥¼ÒÄÏ 9.5 ¸¶Ä¡¸ç CHAPTER 10 º¸¾È: ºê¶ó¿ìÀú¸¦ º¸È£ÇÏ´Â HTTPÀÇ ±â´É10.1 ±âÁ¸ÀÇ °ø°Ý 10.2 ºê¶ó¿ìÀú¸¦ ³ë¸®´Â °ø°ÝÀÇ Æ¯Â¡ 10.3 Å©·Î½º »çÀÌÆ® ½ºÅ©¸³Æà 10.4 Áß°£ÀÚ °ø°Ý 10.5 ¼¼¼Ç ÇÏÀÌÀçÅ·10.6 »çÀÌÆ® °£ ¿äû À§Á¶10.7 Ŭ¸¯ÀçÅ·10.8 ¸®½ºÆ®Çü °èÁ¤ ÇØÅ·10.9 À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇÑ º¸¾È °¡À̵å¶óÀÎ 10.10 À¥ ±¤°í ¹× º¸¾È10.11 ¸¶Ä¡¸ç CHAPTER 11 Ŭ¶óÀ̾ðÆ® ½ÃÁ¡¿¡¼ º¸´Â RESTful API11.1 RESTful API11.2 ¸Þ¼µå 11.3 ½ºÅ×ÀÌÅͽº ÄÚµå11.4 ¹Ùµð 11.5 ½ÇÁ¦ REST API »ìÆ캸±â(PAY.jp) 11.6 ½ÇÁ¦ REST API »ìÆ캸±â(±êÇãºê) 11.7 REST API¿¡ ¾×¼¼½ºÇÒ ¶§ ÁÖÀÇÇÒ Á¡11.8 ¸¶Ä¡¸ç APPENDIX A Go ¾ð¾îÀÇ JSON ÆÄ½Ì A.1 Go ¾ð¾îÀÇ ±¸Á¶Ã¼ ű׸¦ »ç¿ëÇÑ JSON ÆĽÌA.2 JSON ÀÀ¿ëÇϱâ