ã倩æ°äºå ±ãã¢ããªã«çµã¿èŸŒã¿ããããçºæ¿ã¬ãŒãããªã¢ã«ã¿ã€ã ã«ååŸãããããäœæãéµäŸ¿çªå·ããèªåå ¥åããããââãããªæ©èœãèªåã§äœãããšãããšããŒã¿ã®çšæã ãã§éæ¹ã«æ®ããŸããããð ã§ãå®å¿ããŠãã ãããWeb APIã䜿ãã°ãäžçäžã®äŸ¿å©ãªããŒã¿ãPythonããäžè¡ã®ã³ãŒãã§æã«å ¥ããŸããâš
Web APIãæ±ããããã«ãªããšãèªäœã¢ããªã®å¯èœæ§ãäžæ°ã«åºããããããŒã¿ãæã£ãŠããªãããã§ããªãããšããå£ãã»ãŒæ¶æ» ããŸããð 仿¥ããããªãã®éçºäœéšã¯å¥ã¹ããŒãžãžçªå ¥ã§ãã
Web APIã¯ããããã¯ãŒã¯çµç±ã§ããŒã¿ãããåãããä»çµã¿ã®ã²ãšã€ã§ãããã£ããããŒã«ã®ããã«ããã¡ãããããªã¯ãšã¹ãããæãããšãåãããããã¬ã¹ãã³ã¹ããè¿ã£ãŠããââãããªã€ã¡ãŒãžã§æãããšããããããã§ããããâŸ
ããšãã°ãèªåã§äœã£ãŠããã¢ããªã®äžã§ã仿¥ã®å€©æ°ã«åãããŠèæ¯ç»åãå€ãããããšæã£ãŠãããã®æ¥ã®å€©æ°ã¯èªåã®PCã«ã¯ãããŸãããã§ã倩æ°ããŒã¿ãè¿ããŠãããWeb APIã«ãªã¯ãšã¹ããæããã°ã欲ããããŒã¿ãç¬æã«æã«å ¥ããã¢ããªã«åæ ã§ããââãããWeb APIã®é åã§ããð€ïž
ð Web APIã䜿ããšãã«ææ¡ãã¹ãã¯ãã©ãã«(URL)ããã©ããã£ãŠ(GET/POSTãªã©)ããã©ããªããŒã¿ãæããã°ãã©ããªããŒã¿ãè¿ã£ãŠããããã®3ç¹ã ããããããæŒãããã°ãçžæã®ãµãŒããŒå éšã®ä»çµã¿ãç¥ããªããŠãèªç±ã«ããŒã¿ãåãåºããŸãã
æšæºã©ã€ãã©ãªã§ã¯ãªãã®ã§ãåå㯠pip install requests ã§ã€ã³ã¹ããŒã«ãå¿
èŠã§ããããšã¯ import requests ã§ãã€ã§ã䜿ããç¶æ
ã«ãªããŸãã
ããŒã¿ååŸã®åºæ¬ã¯ requests.get()ã第äžåŒæ°ã«ãªã¯ãšã¹ãURLãæž¡ãã ãã§OKãã¯ãšãªãã©ã¡ãŒã¿ã¯ ?key=value&key2=value2 ã®åœ¢åŒã§URLã«çŽæ¥ä»ããããparams åŒæ°ã«èŸæžã§æž¡ãã®ãå®çªã§ããð®
è¿ã£ãŠãã Response ãªããžã§ã¯ããããã¹ããŒã¿ã¹ã³ãŒããããã£ãåãåºããŸããã¹ããŒã¿ã¹ã³ãŒã200çªå°ãªãæåã400çªå°ã¯ã¯ã©ã€ã¢ã³ãåŽã®åé¡ã500çªå°ã¯ãµãŒããŒåŽã®åé¡ãšããã®ãHTTPã®åºæ¬ã«ãŒã«ãresponse.text ã§æååãresponse.json() ã§èŸæžãšããŠäžèº«ãåãåºããŸãã
å€ãã®APIã§ã¯APIããŒãã¢ã¯ã»ã¹ããŒã¯ã³ã«ããèªèšŒãå¿
èŠã§ãããã®å Žå㯠headers åŒæ°ã« {"Authorization": "Bearer xxxxx"} ã®ãããªèŸæžãæž¡ããŠãªã¯ãšã¹ããéããŸããð å
¬éãããŠããAPIã®ããã¥ã¡ã³ããå¿
ã確èªããŸãããã
ç¡æã§äœ¿ãããéµäŸ¿çªå·æ€çŽ¢APIãã¯ãéµäŸ¿çªå·ãæããã ãã§äœæããŒã¿ãè¿ããŠãããåŠç¿ã«æé©ãªAPIã§ããrequests.get(url, params={"zipcode": "1000001"}) ã®ããã«åŒã³åºããšãJSONã§çµæãæ»ã£ãŠããŸããð®
æ»ã£ãŠããèŸæžãã results ããŒããã©ããšãéœéåºçã»åžåºçºæã»çºååãããããåãåºããŸããæååãçµåããã°ããã©ãŒã å
¥åã®èªåè£å®æ©èœãªãããæ°è¡ã§å®è£
ã§ããŠããŸããŸããâš
åç»ãããã¥ã¡ã³ãã ãã§ãåºæ¬ã¯åŠã¹ãŸãããæžç±ãå¿«é©ãªåŠç¿ç°å¢ãæŽãããšåžåã¹ããŒããäœåã«ãå€ãããŸãã仿¥ããããªãã®åŠç¿ãã¹ã¯ãã¢ããã°ã¬ãŒãããŸããããð
requestsã©ã€ãã©ãªã®äœ¿ãæ¹ããèªèšŒä»ãAPIã®æ±ãæ¹ãŸã§ããµã³ãã«ã³ãŒããã£ã·ãã§åŠã¹ãå®çªæžãåç»ã§åŸãç¥èãäœç³»çã«æŽçããã人ã«ãŽã£ããã§ãã
ãã¹ããŒã¿ã¹ã³ãŒãã£ãŠäœïŒããããããŒã£ãŠçµå±äœã®ããïŒãââãããªã¢ã€ã¢ã€ãäžæ°ã«è§£æ¶ããŠãããåèãWebéçºãç¶ãããªãäžåºŠã¯èªãã§ããããäžåã§ãã
ååŸããããŒã¿ãFastAPIãFlaskã§é ä¿¡ããåŽã®ã¹ãã«ã身ã«ã€ããŠãããšãéçºã®å¹ ãäžæ°ã«åºãããŸããã䜿ãåŽããšãäœãåŽãäž¡æ¹ã®èŠç¹ãé€ããå®è·µæžã§ãã
APIåŠç¿ã¯ã³ãŒããæžããŠå®è¡âã¬ã¹ãã³ã¹ã確èªâä¿®æ£ãã®ç¹°ãè¿ããã¬ã¹ãã³ã¹ãéããŠæã¡éã³ãããããŒãPCããããšãã«ãã§ã§ãé»è»ã§ããµã¯ãµã¯åŠç¿ãé²ã¿ãŸããâïž
å·Šã«ãšãã£ã¿ãå³ã«APIããã¥ã¡ã³ããJSONãã¥ãŒã¯ã衚瀺ã§ãããšãåŠç¿éåºŠã¯æ®µéãã15.6ã€ã³ãã®ã¢ãã€ã«ã¢ãã¿ãŒãªããå€åºå ã§ããã¥ã¢ã«ãã£ã¹ãã¬ã€ç°å¢ãåçŸã§ããŸããð
å€ãã®ãµãŒãã¹ã¯å
¬åŒãµã€ãã§ç¡æç»é²ãããšAPIããŒãçºè¡ãããŸããååŸããããŒã¯ headers ã params ã«èšå®ããŠãªã¯ãšã¹ããéããŸããã³ãŒãã«çŽæžããããç°å¢å€æ°ãèšå®ãã¡ã€ã«ããèªã¿èŸŒãéçšãå®å
šã§ããð
response.json() ãåŒã³åºãã°èªåçã«èŸæžïŒdictïŒã«å€æãããŸãããã¹ããæ·±ãå Žåã¯ãdata["results"][0]["address1"] ã®ããã«ããŒã§æãé²ããŠåãåºãã®ãåºæ¬ã§ãã
å€ãã®APIã«ã¯ã¬ãŒããªãããïŒäžå®æéãããã®ãªã¯ãšã¹ãäžéïŒãèšå®ãããŠããŸããçæéã«å€§ééä¿¡ãããšIPãããã¯ãããå¯èœæ§ãããã®ã§ãtime.sleep() ã§ééã空ããã®ãå®å
šçã§ããâ±ïž
ããŒã¿ãéä¿¡ããŠäœããäœæã»æŽæ°ããããšã㯠requests.post(url, json=ããŒã¿) ã䜿ããŸãããã°ã€ã³æ
å ±ã®éä¿¡ãèšäºæçš¿ãªã©ãæžã蟌ã¿ç³»ã®æäœã§é »åºããŸãã
éµäŸ¿çªå·æ€çŽ¢APIã倩æ°äºå ±ã®OpenWeatherMapãçºæ¿ã¬ãŒãã®ExchangeRate-APIãjokeã®JokeAPIãªã©ãèªèšŒãªãã§æ°è»œã«è©ŠããAPIããããããããŸãããŸãã¯ç°¡åãªAPIã§ããªã¯ãšã¹ãâã¬ã¹ãã³ã¹ãã®æµããäœæããã®ãäžéã®è¿éã§ããð
Web APIã¯ãèªåã§æã£ãŠããªãããŒã¿ãç¬æã«æã«å ¥ããããéæ³ã®ãããªä»çµã¿ãrequestsã©ã€ãã©ãªã®åºæ¬ããæŒãããã°ãäœæããŒã¿ã倩æ°ãçºæ¿ãSNSæçš¿ãå°å³æ å ±ãŸã§ãäžçäžã®ããŒã¿ãããªãã®Pythonã³ãŒãããæ±ããããã«ãªããŸããð
仿¥ç޹ä»ããæžç±ãã¬ãžã§ãããæããŠããŸãã¯éµäŸ¿çªå·æ€çŽ¢APIã®ãããªç¡æAPIãã詊ããŠã¿ãŠãã ããã1é±éåŸã«ã¯ãèªäœã¢ããªã«å€éšããŒã¿ãçµã¿èŸŒãã§ãããå šéšèªåã§äœã£ãã®ïŒïŒããšé©ãããäœéšãåŸ ã£ãŠããŸãããããWeb APIã®æãéããŠãéçºè ãšããŠã®äžæ®µäžã®ã¹ããŒãžãžé²ã¿ãŸããããðâš
ð§© ããºã«ãè§£ãå¿«æãã³ãŒãã§…
âš ããã°ã©ã ã®åäœã軜ããã…
ð ãµãŒããŒãµã€ãéçºã®äžçãž…
âš é¢åãªWebäœæ¥ãèªååã…
ð ïž ããã¹ãããã€ããããå…
â³ ãåŸ ã¡æéãããŒãã«ãã