
ã¯ããã«
ããã«ã¡ã¯ãå±±ç°ã§ããæè¿å°ãã ãæ¶¼ããã¨æããåé¢ãã·ã£ã¼ãããç³»ã®ã¢ã¤ã¹ã«ãããå§ãã¦ãã¾ãç¬ã å ¥ç¤¾ãã¦ãã3ã¶æãçµéãã¦ãããããæ £ãã¦ãã¾ããã æ¬è¨äºã¯å ¥ç¤¾ãã¦2æ¬ç®ã®è¨äºã§ãä»åã¯ç ä¿®ã§å¦ãã APIããã¥ã¡ã³ã使ã®è©±ã§ããç ä¿®ã§ã¯ã·ã§ããã³ã°ãµã¤ãã®API使ã«åãçµãã ã®ã§ãããæ³å以ä¸ã«ããã¥ã¡ã³ã使ã«è¦æ¦ãããã®ã§æ´çãããã¦æ¸ãã¦ãã¾ãã
OpenAPIã¨ã¯
OpenAPIã¨ã¯ãOpenAPI Specificationãã®ç¥ã§REST APIã®ã³ã¼ããããã¥ã¡ã³ããçæã§ãããã©ã¼ãããã®ãã¨ãæãã¾ããAPI仿§æ¸ã¯Excelã§ä½æããã¨æ§å¼ã®çµ±ä¸ã管çã®ãã«ããã§åé¡ãèµ·ãããããã§ããOpenAPIã®ãã©ã¼ããããç¨ãããã¨ã§ãAPI仿§æ¸ã®æ§å¼ãçµ±ä¸ããããã管çãæ¥½ã«ãªãã¾ããç ä¿®ã§ã¯OpenAPIèªä½ã¯ãã¼ã«ã§ã¯ãªããAPIã®ä»æ§æ¸ã使ããããã®ä¸ã¤ã®èãæ¹ã¨ãããã¨ãå¦ã³ã¾ããã
Swaggerã§APIãè¨è¨ãã
Swaggerã¨ã¯OpenAPIãå®è£ ããããã®ãã¼ã«ã»ããã®ãã¨ãæãã¾ãã社å ã®ç ä¿®ã§ã¯ãã¼ã«ã®ä¸ã¤ã§ãããSwagger Editorããç¨ãã¦APIè¨è¨ãè¡ãã¾ãããSwagger Editorã¯ãã©ã¦ã¶ä¸ã§OpenAPIãè¨è¿°ã§ããã¨ãã£ã¿ã¼ã§ããå·¦ååãã¨ãã£ã¿ã¼ã¨ãªã£ã¦ããå³ååã¯å®ç¾©ãã¡ã¤ã«ã®API ãã¹ãã®ããã® UI ãæä¾ãã¦ãã¾ããå®éã«å·¦ååã®ã¨ãã£ã¿ã¼ã®å 容ã夿´ããã¨ããã®ã¾ã¾å³ååã®UIãå¤åããããæ¥½ãã¿ãªãã触ããã¨ãã§ãã¾ããã
OpenAPIã®ãã£ã¼ã«ã
OpenAPIã«ã¯ä»¥ä¸ã®ãã£ã¼ã«ããåå¨ãã¦ãã¾ããç ä¿®ä¸ã«è¨è¿°ããå 容ãä¾ã«ç¤ºããªããç´¹ä»ãã¦ããã¾ãã
- openapi
- info
- externalDocs
- servers
- tags
- paths
- components
openapi
OpenAPI Specification (OAS)ã®ãã¼ã¸ã§ã³ãè¨è¿°ãã¾ã
openapi: 3.0.3
info
API ã«é¢ããæ å ±ãè¨è¿°ãã¾ããAPI ã®æ¦è¦ã ã£ããã©ã¤ã»ã³ã¹å½¢å¼ã ã£ããã API ãã®ãã®ã®æ å ±ããã¡ãã«æ¸ããã¨ãã§ãã¾ãã
info: title: Shopping API - OpenAPI 3.0 description: |- This is a Shopping test.ããã¯ç ä¿®ãã¹ãã§ãã termsOfService: http://example.com/riyoukiyaku/hyoji/ contact: email: [email protected] license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html version: 1.0.0 externalDocs: description: Find out more about Swagger url: http://swagger.io
externalDocs
å¤é¨ãªã³ã¯ãè¨è¿°ãã¾ãã
externalDocs: description: Find out more about Swagger url: http://swagger.io
servers
å®éã« API ãé åããã¦ãããµã¼ãã¼ãè¨è¿°ãã¾ãã
servers: - url: https://localhost/api
tags
APIãæ´çããããã«å©ç¨ããã¿ã°ãå®ç¾©ãã¾ããç¨éãªã©ã«å¿ããã°ã«ã¼ãã³ã°ãè¡ãã¾ãã
tags: - name: 販売管çç³» description: 販売管çç³»API externalDocs: description: Find out more url: http://swagger.io - name: åæ³¨ç³» description: åæ³¨ç³»API externalDocs: description: Find out more about our store url: http://swagger.io - name: ã¦ã¼ã¶ã¼ç®¡çç³» description: ã¦ã¼ã¶ã¼ç®¡çç³»API - name: åå管çç³» description: åå管çç³»API
paths
URLã®ãã¹åã®é¨åã表ãããã¹å¥ã«GET, POST, PUT, DELETEãªã©ã®REST APIã®ä»æ§ãè¨è¿°ã§ãã¾ãããªã¯ã¨ã¹ããã©ã¡ã¼ã¿ãã¬ã¹ãã³ã¹ã«é¢ãã¦ãããã§è¨è¿°ãã¾ããï¼è©³ç´°ãªãªãã¸ã§ã¯ãã¹ãã¼ãã«é¢ãã¦ã¯$refãç¨ãã¦æ¬¡é ã®componentsãå¼ã³åºããã¿ã¼ã³ãå¤ãã§ããï¼APIã®æ°ã ãè¨è¿°ãã¦ãããªãã¦ã¯ãªããªããããããããè¨è¿°éãå¤ããªãããããã£ã¼ã«ããã¨æãã¾ãã
paths: /products: get: tags: - åå管çç³» summary: ååæ å ±ã®ä¸è¦§ãåå¾ããAPI description: ååæ å ±ã®ä¸è¦§ãåå¾ããAPI operationId: getproductlist responses: '200': description: Successful operation content: application/json: schema: $ref: '#/components/schemas/Products' post: tags: - åå管çç³» summary: ååæ å ±ãæ°è¦è¿½å ããAPI description: ååæ å ±ãæ°è¦è¿½å ããAPI operationId: postproductlist requestBody: description: ååæ å ±ãæ°è¦è¿½å ããAPIãªã¯ã¨ã¹ã content: application/json: schema: $ref: '#/components/schemas/PostProduct' responses: '200': description: Successful operation content: application/json: schema: type: integer
components
APIã§ä½¿ç¨ãããªãã¸ã§ã¯ãã¹ãã¼ããè¨è¿°ãã¾ããç´æ¥pathsã«ãªãã¸ã§ã¯ãã¹ãã¼ããè¨è¿°ãããã¨ãå¯è½ã§ããããããcomponentsã使ç¨ãããã¨ã§ãªãã¸ã§ã¯ãã¹ãã¼ãã®å ±éåãè¡ããã¨ãã§ããå ¨ä½ã®ã³ã¼ãã®è¨è¿°éãæ¸ãããã¨ãå¯è½ã§ãã
components: schemas: Product: type: object required: - productName price properties: productId: type: integer description: ååID productName: type: string description: ååå price: type: integer description: 夿®µ Products: type: array items: $ref: '#/components/schemas/Product' PostProduct: type: object properties: productName: type: string description: ååå price: type: integer description: 夿®µ
ãããã«
APIã®ããã¥ã¡ã³ã使èªä½ã®çµé¨ããªãã£ãã®ã§ãããExcelãå©ç¨ããä¿äººçãªããã¥ã¡ã³ãããããOpenAPIã¨ããå ±éã®ãã©ã¼ããããå©ç¨ããããã¥ã¡ã³ãã®æ¹ã第ä¸è ãå 容ãè¦ã¦ãçè§£ãããããããªå°è±¡ã¯ããã¾ããç¾å¨æºãã£ã¦ããããã¸ã§ã¯ãã§ã¯Swaggerã使ã£ã¦ãããä»å¾APIãæ°ãã«è¨è¨ããæ©ä¼ãããã¨æãã¾ãããã®æã«åãã¦ãåºãæ´»ç¨ããã¦ããOpenAPIã«ãæ £ãã¦ããããã§ãã