当前位置: 首页 > 知识库问答 >
问题:

SpringFox Swagger创建XSD模型所需的定义属性

郎成弘
2023-03-14

我有一个REST webapp,它使用Swagger来编写文档,除了body参数外,它的工作效果很好。主体的所有属性都是可选的

我的Project对象是用一个XSD文件生成的,我确保所有元素中的minOccurs=1,maxOccurs=1或unbounded以及我的所有属性都设置为use=required。这似乎对它没有任何影响。接下来我试着添加了

@apiparam(value=“项目主体”,required=true)@requestbody ProjectInfo项目

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.11 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2016.02.12 at 09:33:59 AM CET 
//


package be.smartask.api.model.post;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.xml.bind.annotation.*;


/**
 * <p>Java class for anonymous complex type.
 * <p>
 * <p>The following schema fragment specifies the expected content contained within this class.
 * <p>
 * <pre>
 * &lt;complexType&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;attribute name="name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "projectInfo")
@ApiModel
public class ProjectInfo {

    @XmlAttribute(name = "name", required = true)
    protected String name;

    /**
     * Gets the value of the name property.
     *
     * @return possible object is
     * {@link String }
     */
    @ApiModelProperty(value = "The unique name of the project", required = true)
    public String getName() {
        return name;
    }

    /**
     * Sets the value of the name property.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setName(String value) {
        this.name = value;
    }

}

但是现在我的问题变成了我可以在XSD文件中添加Swagger注释,这样它就可以自己生成了吗?

共有1个答案

伯博
2023-03-14

我需要的注释是@APIModelProperty(value=“”,required=true)

要想从我的退出中得到这个结果是一个挑战,但我通过接下来的步骤设法做到了这一点。

将此添加到pom.xml中

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.13.1</version>
    <configuration>
        <forceRegenerate>true</forceRegenerate>
        <extension>true</extension>
        <args>
            <arg>-Xannotate</arg>
        </args>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-basics-annotate</artifactId>
                <version>1.0.2</version>
            </plugin>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>jaxb2-annotate-plugin-test-annox-annotations</artifactId>
                <version>1.0.0</version>
            </plugin>
        </plugins>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.3.1</version>
        </dependency>
    </dependencies>
</plugin>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:xsd="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           jaxb:version="2.1"
           xmlns:annox="http://annox.dev.java.net"
           jaxb:extensionBindingPrefixes="annox">
<xs:element name="projectInfo">
    <xs:complexType>
        <xsd:annotation>
            <xsd:appinfo>
                <annox:annotate target="getter">@io.swagger.annotations.ApiModel(value = "project")</annox:annotate>
            </xsd:appinfo>
        </xsd:annotation>
    </xs:complexType>
</xs:element>

在方法级别,像这样

<xs:element name="projectInfo">
    <xs:complexType>
        <xsd:annotation>
            <xsd:appinfo>
                <annox:annotate target="getter">@io.swagger.annotations.ApiModel(value = "project")</annox:annotate>
            </xsd:appinfo>
        </xsd:annotation>
        <xs:attribute type="xs:string" name="name" use="required">
            <xsd:annotation>
                <xsd:appinfo>
                    <annox:annotate target="getter">@io.swagger.annotations.ApiModelProperty(value="Must be unique", required = true)</annox:annotate>
                </xsd:appinfo>
            </xsd:annotation>
        </xs:attribute>
    </xs:complexType>
</xs:element>

更多信息可以在这里找到

  • https://github.com/highsource/jaxb2-annotate-plugin
  • https://java.net/jira/browse/jaxb2_commons-32
 类似资料:
  • 模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置)。 类型 受支持的类型是: text:文本字符串; number:浮点数。你可以指定size为2 | 4 | 8; integer:整数。你可以指定size为2 | 4 | 8; boolean:true或false的值; date:日期对象。你可以指定time为true; enum:一个备选列表

  • 我想将架构导入我的新主机。首先,我创建了新的用户帐户: 我需要授予什么样的特权才能拥有超级角色? (创建模式,表,包,触发器等) 允许我访问所有这些是一种特权?

  • 我的要求是像这样分析句子。“给我找一本饥饿的潮汐书。”或者“饥饿的潮水或破碎的镜子,哪一个更好。”饥饿的潮汐和破碎的镜子是书的名字,为此我需要创建一个自定义模型,在给定的令牌数组中找到书的标题。因此,稍后我可以根据给定的句子创建一个查询。请让我知道我如何做到这一点,或者如果有任何其他方法来分析这样的句子。

  • 无效: 有效: (运输是抽象的) 顺便说一句,我的所有jaxb类都在同一个包中,并且我的JaxbContext是针对这个包配置的。

  • 我试图使用OpenNLPJavaAPI从文档中提取名称、技能等实体。但它没有提取正确的名称。我使用opennlp源锻造链接上可用的模型 下面是一段java代码- 我想做的是: 我正在使用ApacheTika将PDF文档转换为纯文本文档 但它正在提取姓名和其他单词。它不是提取专有名称。如何创建自定义模型,从文档中提取游泳、编程等技能? 给我一些想法! 任何帮助都将不胜感激!?

  • 我是新来的rails和建立一个应用程序,从外部网站获取json数据,并将其保存在数据库中。json在User下有以下字段: {“id”:“姓名”:“用户名”:“电子邮件”:“地址”:{“街道”:“套房”:“城市”:“邮编”:“}”电话::“网站”:“}”, 我知道如何创建一个用户模型与名称,用户名和电子邮件。但是我如何添加具有多个子属性的地址。我没有看到“数组”作为创建模型的选项。提前谢谢你。