If youâve been a backend or full-stack developer for any length of time, you know the ritual. A new feature requires a new API endpoint, and the boilerplate ceremony begins: define the route, write the controller, validate input, handle errors, and update the docs. This process isnât just tedious â itâs fragile. Every extra definition or cast is a chance for a silent bug: mismatched types, stale d
ã¯ããã« ããã«ã¡ã¯ãretail HUBã§ Software Engineer ããã¦ããã»ãã ã§ãã ä»åã¯ç§ãç¾å¨çæãã¦ããäºæ¥è²æ¸¡ãããã¢ããªã社å ã§æç¶çãªãããã¯ãéçºãè¡ããç¶æ ã«ãããªãã¬ã¤ã¹ããã¸ã§ã¯ããã©ã®ããã«è¡ã£ã¦ãããç´¹ä»ãããã¨æãã¾ãã ãã®è¨äºã§ã¯ãªãã¬ã¤ã¹ãè¡ãã«ããã£ã¦ã©ã®ãããªãã¨ã課é¡ã«æãã¦ãã®èª²é¡ã«å¯¾ãã¦ã©ã®ãããªè§£æ±ºçãã¨ã£ãã主ã«ãµã¼ãã¼ã®å®è£ ã«ã¤ãã¦èª¬æãã¦ãã¾ãã ãããã¹ã¼ãã¼ã¢ããªã¨ã¯ ç¾å¨å¼ç¤¾ã§ã¯ãããã¹ã¼ãã¼ã¢ããªã¨ã㦠Web ã¢ããªã¨ã¹ããã¢ããªã®äºã¤ã®ã·ã¹ãã ãæä¾ãã¦ãã¾ãã Web ã¢ããªã¯è²©ä¿ã³ã³ãã³ãã®è¨å®ã売ãä¸ãã®ç®¡çã»éè¨ãè¡ããã¨ãå¯è½ãªç®¡çã·ã¹ãã ã¨åãåãæ¹æ³ã«å¿ããä¾¡æ ¼å¤æ´ãéæå¤æ´ã«ã対å¿ããæ¶è²»è ã®æè»ãªè²·ãç©ãå®ç¾ããã客æ§åãã¢ããªã 17 ã®å°å£²ãæ§ã«ãã¹ããã¢ããªã§ã¯ Web ã¢ããªã®ã客
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
GithHubã¯ãä»å¾ã¯API仿§ãè¨è¿°ããæ¥çæ¨æºã§ããOpenAPIã«å¯¾å¿ããçæãã¼ã«ã§çæããAPIã¯ã©ã¤ã¢ã³ããSDKã¨ãã¦æä¾ãããã¨ãæããã«ãã¾ããã ç¾å¨ã¾ã§å社ã¯ãOctokitãã¨å¼ã°ããSDKãæä¾ãã¦ãã¾ããããã¯GitHubã®éçºè ããå¤é¨ã®ã¢ããªã±ã¼ã·ã§ã³éçºè ã®ããã«ããã¾ãã¾ãªè¨èªã§GitHub APIãå¼ã³åºããããããã«éçºããã©ã¤ãã©ãªã¨è¨ãã¾ãã ããã«å¯¾ãã¦ä»å¾ã¯ãGitHubã®APIãã©ã®ãããªä»æ§ã§ããããæ¥çæ¨æºã§ããOpenAPIã«å¾ã£ã¦è¨è¿°ããããã¥ã¡ã³ããåºã«ãããããAPIã¯ã©ã¤ã¢ã³ããçæãããã¼ã«ãMicrosoft Kiotaãã«ãã£ã¦çæããAPIã¯ã©ã¤ã¢ã³ããSDKã¨ãã¦æä¾ãããã¨ã«ãªãã¨èª¬æããã¦ãã¾ãã GitHubã¯ãããå社ã«ã¨ã£ã¦å¤§ããªè»¢æç¹ã ã¨ãããã°ãOur move to generated SDKsãï¼
REST is an acronym for REpresentational State Transfer and an architectural style for distributed hypermedia systems. Roy Fielding first presented it in 2000 in his famous dissertation. Since then, it has become one of the most widely used approaches for building web-based APIs (Application Programming Interfaces). REST is not a protocol or a ⦠REST is an acronym for REpresentational State Transfe
RESTful Web API ã®å®è£ ã¯ãRepresentational State Transfer (REST) ã¢ã¼ããã¯ãã£ã®ååã使ç¨ãã¦ãã¯ã©ã¤ã¢ã³ãã¨ãµã¼ãã¹éã®ã¹ãã¼ãã¬ã¹ã§ççµåã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®ç¾ãã Web API ã§ãã RESTful ã§ãã Web API ã¯ããªã½ã¼ã¹ã«å¯¾ãã¦æä½ãå®è¡ãããã¤ãã¼ã¡ãã£ã¢ ãªã³ã¯ã¨ HTTP æä½ç¶æ ã³ã¼ããå«ããªã½ã¼ã¹ã®è¡¨ç¾ãè¿ãæ¨æº HTTP ãããã³ã«ããµãã¼ããã¦ãã¾ãã RESTful Web API ã¯ã次ã®ååã«å¾ãå¿ è¦ãããã¾ãã ãã©ãããã©ã¼ã ã«ä¾åãã¦ãã¾ãããã¤ã¾ããã¯ã©ã¤ã¢ã³ãã¯å é¨å®è£ ã«é¢ä¿ãªã Web API ãå¼ã³åºããã¨ãã§ãã¾ãã ãã©ãããã©ã¼ã ã®ç¬ç«æ§ãå®ç¾ããããã«ãWeb API ã¯æ¨æºãããã³ã«ã¨ã㦠HTTP ã使ç¨ããæç¢ºãªããã¥ã¡ã³ããæä¾ããJSON ã XML ãªã©
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
ããã«ã¡ã¯ãWantedly People ã¢ããªã®éçºããã¦ãã竹éï¼Altechï¼ã§ããä»åã¯ãProtocol Buffers ã«ã¤ãã¦ã®è¨äºã«ãªãã¾ãã Wantedly People ã§ã¯ã2018å¹´ã« Protocol Buffers ï¼ä»¥ä¸ãProtobuf ã¨å¼ã¶ï¼ãã¨ãããã¤ã¯ããµã¼ãã¹ã«å ¥ã£ã¦ä»¥éãä½åº¦ãå¤§è¦æ¨¡ã« Protobuf ã使ã£ãéçºããã¦ãã¾ãããã¾ããã®çµé¨ãéãã¦ãProtobuf ã«ã¯åã«ãåãã¤ãã¦å¬ãããã¨ããã ãã§ã¯ãªããã©ãã¤ã çãªå¤åããããã¨ãåãã£ã¦ãã¾ããã ãã®ç¥è¦ãå ¨ç¤¾ã«å±éãããããå»å¹´ãProtobuf ã«ãããããã¯ãéçºéç¿ä¼ãã¨ããä¼ãè¡ãã¾ããããã®è¨äºã®å 容ã¯ãããã§è©±ãããã¨ã®ååãProtobuf ã使ãã¨éçºãã©ãå¤ããã®ãï¼ãã«ãªãã¾ãã ãªããProtobuf ã«ã¯ãã¤ããªãã©ã¼ãããã¨ãã¦ã®å½¹å²ã¨ã¤ã³ã¿ã¼ã
çããã¯REST APIã®éçºã«ã©ã®ãããªãã¬ã¼ã ã¯ã¼ã¯ãã使ãã§ããããï¼ ããã¾ã§ãå人çã«ã¯Â Flask çã®è»½éãªWebãã¬ã¼ã ã¯ã¼ã¯ã使ã£ã¦éçºãããã¨ãå¤ããREST APIéçºã«ç¹åããWebãã¬ã¼ã ã¯ã¼ã¯ï¼ä»¥ä¸ãAPIãã¬ã¼ã ã¯ã¼ã¯ã¨å¼ã¶ï¼ã使ã£ãçµé¨ã¯ããã¾ããã§ããã ãããå æ¥ãæ¥åã§Â Django REST Framework ã«è§¦ããæ©ä¼ããããREST APIã®å®è£ ã«å¿ è¦ãªæ©è½ã®å¤ããæä¾ããã¦ãã¦ãå§åçã«å°ãªãã³ã¼ãã£ã³ã°éã§éçºãå®äºãããã¨ã宿ã§ãã¾ãããä¾ãã°ããã£ã«ã¿ãªã³ã°ï¼URLã¯ã¨ãªã¹ããªã³ã°ã§æ¤ç´¢æ¡ä»¶çãæå®ããåå¾ããå¤ãçµãè¾¼ãï¼æ©è½ã¯ãä¸ããå®è£ ããã¨ãªãã¨æååããã¼ã¹ãã¦ãããªãã¼ã·ã§ã³ãã¦ãã¯ã¨ãªã«æ¸¡ãã¦â¦â¦ãã¨çµæ§é¢åã§ãããDjango REST Frameworkã§ã¯ãã«ãã¤ã³æ©è½ã¨ãã¦æä¾ããã¦ããã®ã§ãæå°éã®ã³ã¼ãã§å®
ãã£ãååã ãç¥ã£ã¦ããã©ãããªã®ä¾¿å©ã ã¨ã¯â¦ï¼ï¼ marketplace.visualstudio.com Azure API Management ã® Visual Studio Code æ¡å¼µæ©è½ã§ API ã®ãã¹ãå¼ã³åºãã« REST Client ã使ããã¦ãã®ã§ä½¿ãå§ãã¦ã¿ãã®ã§ããããã£ããã¤ã便å©ã£ããâ¦ãã¨ããææ³ããåºã¦ããªãããã便å©ã§ããã æ®éã« HTTP ã®ãªã¯ã¨ã¹ããããã¹ãã§ç¨æãã¦ãã㨠Send Request æ¼ãã ãã§ã¬ã¹ãã³ã¹ãåºãã¦ãããâ¦ã å äººã®æ¹ã ãæ²¢å±±ç´¹ä»ãã¦ããã¦ãè¨äºãããã®ã§è©³ããä½¿ãæ¹ã¨ãæ¨ãã®ãã¤ã³ãã¯ãã¡ããè¦ãã¨ããããããã¨æãã¾ãï¼ qiita.com ç§ã®æ¨ããã¤ã³ã ä¸è¨è¨äºã«ãæ¸ãã¦ããã¾ããã1ãã¡ã¤ã«ã§è¤æ°ã®ãªã¯ã¨ã¹ããæ¸ãã¦ããã¦ãåå¥ã«å®è¡ã§ããã®ã§ç¹å®ã® API ããã¹ãã§å©ãããã®ãã¡ã¤ã«ã 1 ã¤ç¨æ
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
grpc-gatewayã®éçºã«å¦ã¶ãã½ããã¦ã§ã¢ã®è¨è¨ææ³ï½Yuguiãå®ããã2ã¤ã®åºæ¬è¨è¨æ¹é è¯ãã½ããã¦ã§ã¢ã¨ã¯ã©ã®ãããªæ¹éã®ãã¨ã«è¨è¨ããã¦ããã®ã§ãããããåºã使ããã¦ããOSSã§ããgrpc-gatewayã®éçºéç¨ãä½è ã®Yuguiãããæ¯ãè¿ãããã®è¨è¨ææ³ã解説ãã¦ãããã¾ããã ããã«ã¡ã¯ã Yuguiã¨è¨ãã¾ãã æ¬è¨äºã§ã¯èªè ãããè¯ãã½ããã¦ã§ã¢è¨è¨ãè¡ãããã®åèã¨ãã¦ãçè ãçµé¨ãã¦ããè¨è¨ä¸ã®æ±ºå®ããç´¹ä»ãã¾ãã çè ã¯ããã¾ã§Ruby 1.9ã®ãªãªã¼ã¹ããã¸ã¡ã³ããæ å½ããããGoogle Mapsã®æ¥æ¬åãå°çãã¼ã¿å¦çãgrpc-gatewayã®éçºãªã©ããã¦ãã¾ãããããã¦ããããéãã¦ãåºãé·ã使ããã¦æ¡å¼µããã¦ããã½ããã¦ã§ã¢ãè¨è¨ããããã®æ¹é決å®ã«æºãã£ãããæ¹éã«é¢ããè¯ãè°è«ãç®ã«ãããããæ©ä¼ã«æµã¾ãã¦ãã¾ãããä¸ã§ãæ¬è¨äºã§ã¯ã
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? æ¬è¨äºã®æµã ã¯ããã« èªè ã®æ³å® ãã®è¨äºã«æ¸ãã¦ããã㨠Codespot ã¨ã¯ Codespot å ¨ä½ã®ã¢ã¼ããã¯ã㣠Django ã使ãçç± Django REST framework ( DRF ) ã使ãçç± å ·ä½ç㪠Django + DRF ã®é å DRF ã®ã·ãªã¢ã©ã¤ã¶ã«ä¸å·¥å¤«ããã㨠DRF ã®ã·ãªã¢ã©ã¤ã¶ã§ãã¼ã¿ãå å·¥ãã¦ä¿åãæ´æ°ãããæã®è¨è¨ DRF ã®ãã¼ããã·ã§ã³ã«ã¯ã»ããã me API ã®ãã㪠REST ã§ãªããã®ã§ã DRF ã«ä¹ã£ããããæ ã¢ããªã·ãã¯ã§ãªã Web ãµã¼ãã¹ã§ã® OAuth
REST API仿§ããAPIã¯ã©ã¤ã¢ã³ããã¹ã¿ããµã¼ããèªåçæãããOpenAPI Generatorããªã¼ãã³ã½ã¼ã¹ã§å ¬éãSwagger Codegenããã®ãã©ã¼ã¯ RESTful APIã®ä»æ§ãåºã«ãAPIã¯ã©ã¤ã¢ã³ãç¨SDKãAPIã¯ã©ã¤ã¢ã³ãã®ãã¹ãç¨ã«APIãµã¼ãã®ããã«æ¯ãèã£ã¦ãããã¹ã¿ããµã¼ããWebãµã¼ãã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³ãããã¥ã¡ã³ããªã©ãèªåçæãã¦ããããOpenAPI Generatorãããªã¼ãã³ã½ã¼ã¹ã¨ãã¦å ¬éããã¾ããã RESTful API仿§ã®è¨è¿°ãã©ã¼ãããã¯ã2015å¹´ã«ãã¤ã¯ãã½ãããGoogleãIBMããç«ã¡ä¸ãããOpen API Initiativeããæå±ãããOpenAPI Specificationããäºå®ä¸ã®æ¥çæ¨æºã¨ãªã£ã¦ãããOpenAPI Generatorããã®OpenAPI Specificationãåºã«é
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
ã©ã³ãã³ã°
ã¡ã³ããã³ã¹
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}