为什么Swagger在例子中创建了一个systemId字段?
我有一个 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 视图中。但是在整个项目中,没有一个名为 的字段。我逐一检查了请求类及其祖先,并通过搜索Java检查了整个项目。该符号序列甚至不会作为另一个名称的子字符串出现。systemId
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;
炫耀的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以供参考)生成一些毫无意义的字符串,而不是简单地显示准备好的字符串。
更多编辑:
pom 文件:https://drive.google.com/file/d/16fOCq5EFZYVBJRPg0HeiP102eRzEaH6W/view?usp=sharing