1. poruruba

    Posted

    poruruba
Changes in title
+Swagger定義ファイルの書き方(超手抜き編)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,129 @@
+Swagger定義ファイルは、いろいろ定義してバリデーションを厳密にできる反面、ちょっと使おうと思うと、ルールが厳しくて億劫になりがちです。
+
+そこで、必要最低限のSwagger定義ファイルの書き方を備忘録として残しておきます。
+いざ本番となるときには、SwaggerのSpecificationに従って厳密に定義してください。
+
+# 一番簡単な定義
+
+結論だけ示すと、一番簡単な定義は以下の通りです。
+pathのところだけを参考にしてください。
+
+```:swagger.yaml
+swagger: '2.0'
+info:
+ version: 'first version'
+ title: Sample Api
+host: localhost:10010
+basePath: /
+
+schemes:
+ - http
+
+consumes:
+ - application/json
+produces:
+ - application/json
+
+securityDefinitions:
+ basicAuth:
+ type: basic
+ tokenAuth:
+ type: apiKey
+ name: Authorization
+ in: header
+
+paths:
+ /swagger:
+ x-swagger-pipe: swagger_raw
+
+ /test_post:
+ post:
+ x-swagger-router-controller: echo
+ operationId: test_post
+ parameters:
+ - in: body
+ name: body
+ schema:
+ type: object
+ responses:
+ 200:
+ description: Success
+ schema:
+ type: object
+
+ /test_get:
+ get:
+ x-swagger-router-controller: echo
+ operationId: test_get
+ responses:
+ 200:
+ description: Success
+ schema:
+ type: object
+
+definitions:
+ Empty:
+ type: "object"
+ title: "Empty Schema"
+```
+
+# swagger-nodeで最短で立ち上げる
+
+swagger-nodeについては、以下の記事を参考にしてください。
+
+[SwaggerでRESTful環境を構築する](https://qiita.com/poruruba/items/72d8c85f8923bc78b918)
+
+```
+> swagger project create first_restful
+※Frameworkにはexpressを選択します。
+
+> cd first_restful
+```
+
+Swagger定義ファイルをさきほどのswagger.yamlに置き換えてください。
+
+>置き換え対象ファイル:api/swagger/swagger.yaml
+
+以下のファイルを作成します。
+
+```:echo.js
+'use strict';
+
+module.exports = {
+ test_post: test,
+ test_get: test
+};
+
+function test(req, res) {
+ console.log("calling: test");
+
+ var event = {
+ headers: req.headers,
+ body: JSON.stringify(req.body),
+ path: req.swagger.apiPath,
+ httpMethod: req.method,
+ queryStringParameters: req.query
+ };
+
+ res.json( { event: event } );
+}
+```
+
+Restful環境を立ち上げます。
+
+```
+> swagger project start
+```
+
+# curlでたたく
+
+さっそく、Web APIを呼び出したく、例えば、curlを使います。
+
+```
+> curl https://localhost:10010/test_get
+
+{“event”:{XXXXXXわらわらXX}}
+```
+
+以上。最短の記事でした。
+