Skip to content

APIのパラメータに対して数値型の定数を定義できない #23

@masaru-takano

Description

@masaru-takano

対象

DeviceConnect Codegen v0.4.0以降

概要

Swagger 2.0 の仕様上では、APIのパラメータを定義する際、下記のようなinteger型のenumを定義できる。

{
    "name": "exampleParam"
    "type": "integer",
    "format": "int32",
    "enum": [10, 20]
}

上記の定義は、「exampleParamというパラメータは10 または 20のどちらかの値となる」ということを意味する。

しかし、上記の定義を含むJSONをDeviceConnect Codegenに対して入力し、任意のプラットフォームのプラグインを生成したときに問題が発生する。

具体的には、プラグインに同梱するJSON上で、下記のように exampleParam パラメータのenumについての定義が null値の配列に変わってしまう。

{
    "name": "exampleParam"
    "type": "integer",
    "format": "int32",
    "enum": [null, null]
}

これにより、プラグイン起動時に例外が発生し、プラグインが異常終了する。

原因

DeviceConnect Codegenの依存する swagger-parser ライブラリ側で、numberおよびinteger型のenumを解析していないため。

参考: swagger-api/swagger-core#2178

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions