java - 使い方 - swagger-codegen



なぜSwaggerがsystemIdフィールドを作成したのですか? (1)

https://github.com/kongchen/swagger-maven-plugin/issues/608 :ここに答えられたようです

Swagger設定はJacksonアノテーションモジュールをロードしていませんでした、使われたアノテーションをすべて無視しました。 そのため、ApiReaderは間違ったクラスを読みました( https://docs.oracle.com/javase/8/docs/api/org/w3c/dom/DocumentType.html )。

私は以下のヘッダを持つREST POST関数を持っています。

@POST
@Consumes(value = { MediaType.APPLICATION_JSON + ";charset=utf-8" })
@Produces(value = { MediaType.APPLICATION_JSON + ";charset=utf-8" })
@ApiOperation(value = "Create a document type", notes = "creates a document type from Json and returns the created type", response = Response.class)
@Session(roles = { Role.ROLE_ADMINISTRATOR })
@PublicApi
public Response create(
        @ApiParam(value = "Created DocumentType", required = true)
        @SwaggerDataType(type = 
           com.infor.daf.icp.internal.rest.models.DocumentType.class) 
        com.infor.daf.icp.internal.rest.models.DocumentType documentType) {

Swagger UIで見ると、Swaggerはリクエストボディの例を作成しています。 その体は持っています

systemId (string, optional),

モデルビューで

systemId : "string"

JSONビューで。 しかし、プロジェクト全体でsystemIdという名前のフィールドはありません。 私はリクエストクラスとその先祖を一つずつ、そしてプロジェクト全体を検索Javaでチェックしました。 そのシンボルシーケンスsystemIdは、別の名前のサブストリングとしても表示されません。

Swaggerはどこでその名前を取得していますか、またどのようにしてそれを停止できますか? もちろん有効な例を作成してほしいのです。

編集:API関数自体は問題なくJSON入力を受け取り、宣言されたクラスのオブジェクトを正しく構成します。

輸入:

package com....documentarchive.rest.v1

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

Swagger UIはこんな感じです:

編集2
@SwaggerDataTypeを削除、または@RequestBodyに置き換えましたが、奇妙な動作が残ります。

実データを含む具体的な文字列として表示されるように例を設定しました。

@ApiParam(example = DOC_TYPE_EXAMPLE, value = "Created DocumentType", required = true) @RequestBody com.infor.daf.icp.internal.rest.models.DocumentType documentType) {
....
    static final private String DOC_TYPE_EXAMPLE = "{'entityModel':\n" +
        "    {'name':'Anatemplate',\n" +
        "     'desc':'Ana-template',\n" +

それでもそれでも解決しませんでした。 Swaggerは、準備された文字列を単に表示するのではなく、インターネット上のどこかにある(参照用の@ xpa1492のおかげで)遠くのfileから無意味な文字列を生成します。

もっと編集:

POMファイル: https://drive.google.com/file/d/16fOCq5EFZYVBJRPg0HeiP102eRzEaH6W/view?usp=sharing : https://drive.google.com/file/d/16fOCq5EFZYVBJRPg0HeiP102eRzEaH6W/view?usp=sharing / https://drive.google.com/file/d/16fOCq5EFZYVBJRPg0HeiP102eRzEaH6W/view?usp=sharing





javax