[[AWSメモ]] >
* REST API をswaggerで定義する [#ue3242a1]
#setlinebreak(on);

** swagger editor インストール [#t1d155d2]
#html(<div style="padding-left:10px;">)
docker 使うのが楽
#myterm2(){{
docker pull swaggerapi/swagger-editor
docker run -p 8888:8080 swaggerapi/swagger-editor
}}

オンライン版
https://editor.swagger.io/

#html(</div>)


** swagger ui インストール [#b066b4de]
#html(<div style="padding-left:10px;">)
#myterm2(){{
git clone https://github.com/swagger-api/swagger-ui.git
}}
で 配下の dist をどっかWebサーバに配置する。
#html(</div>)

** API の定義 [#w42bcfad]
#html(<div style="padding-left:10px;">)
#mycode2(){{
swagger: '2.0'
info:
  version: '2017-12-17T05:28:50Z'
  title: SampleApi1
schemes:
  - https
paths:
  '/books':
    get:
      produces:
        - application/json
      responses:
        '200':
          description: 200 response
#          schema:
#            type: "array"
#            items:
#              $ref: "#/definitions/BookModel"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/BookModel"
            type: "object"
            properties:
              items:
                title: items
                type: "array"
                items:
                  $ref: "#/definitions/BookModel"
    post:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: BookParams
          in: body
          required: true
          schema:
            $ref: '#/definitions/BookParams'
      responses:
        '200':
          description: 200 response
          schema:
            $ref: '#/definitions/CreatedBook'
  '/books/{id}':
    get:
      produces:
        - application/json
      parameters:
        - name: id
          in: path
          required: true
          type: string
      responses:
        '200':
          description: 200 response
          schema:
            $ref: '#/definitions/BookModel'
    put:
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: id
          in: path
          required: true
          type: string
        - name: BookParams
          in: body
          schema:
            # definitions参照する場合
            $ref: '#/definitions/BookModel'
            # 個別定義する場合
            #type: object
            #properties:
            #  isbn:
            #    title: isbn
            #    type: string
            #  title:
            #    title: title
            #    type: string
            #  price:
            #    title: price
            #    type: integer
      responses:
        '200':
          description: 200 response
          schema:
            $ref: '#/definitions/Empty'
    delete:
      produces:
        - application/json
      parameters:
        - name: id
          in: path
          required: true
          type: string
      responses:
        '200':
          description: 200 response
          schema:
            $ref: '#/definitions/Empty'
definitions:
  Empty:
    type: object
    title: Empty Schema
  CreatedBook:
    type: object
    title: Created book
    properties:
      id:
        title: id
        type: string
  BookModel:
    type: object
    title: Book Model
    properties:
      id:
        title: id
        type: string
      isbn:
        title: isbn
        type: string
      title:
        title: title
        type: string
      price:
        title: price
        type: integer
  BookParams:
    type: object
    title: Parameters for book regist or update
    properties:
      isbn:
        title: isbn
        type: string
      title:
        title: title
        type: string
      price:
        title: price
        type: integer
}}
#html(</div>)

** swagger-editorのイメージ [#sf3e5aed]
#ref(swagger-editor.png);

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS