gpt4 book ai didi

java - 为什么 Swagger 在示例中创建了一个 systemId 字段?

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:20 27 4
gpt4 key购买 nike

我有一个具有以下 header 的 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 创建了一个示例请求正文。那个 body 有

systemId (string, optional),

在模型 View 和

systemId : "string"

在 JSON View 中。但是在整个项目中并没有一个名为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 看起来是这样的:

enter image description here

编辑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 仍然从远处生成一些无意义的字符串 file (感谢@xpa1492 的引用)在互联网上的某个地方,而不是简单地显示准备好的字符串。

更多编辑:

pom 文件:https://drive.google.com/file/d/16fOCq5EFZYVBJRPg0HeiP102eRzEaH6W/view?usp=sharing

最佳答案

似乎在这里得到了回答: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 )。

关于java - 为什么 Swagger 在示例中创建了一个 systemId 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49941628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com