4.5. RESTful Service Description Language(RSDL)

RESTful Service Description Language(RSDL)提供了在整个 XML 文件中的 REST API 中的结构和项描述。使用以下请求来调用 RSDL。
GET /api?rsdl HTTP/1.1
Accept: application/xml
产生以下格式的 XML 文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rsdl href="/api?rsdl" rel="rsdl">
    <description>...</description>
    <version major="3" minor="1" build="0" revision="0"/>
    <schema href="/api?schema" rel="schema">
        <name>...</name>
        <description>...</description>
    </schema>
    <links>
        <link href="/api/capabilities" rel="get">
            ...
        </link>
        ...
    </links>
</rsdl>

表 4.5. RSDL 结构项

描述
descriptionRSDL 文件的描述。
versionAPI 版本(包括 major 版本、minor 版本、buildrevision)。
schema到 XML schema(XSD)文件的链接。
links定义 API 中的每个 link
每个 link 项包括以下结构:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rsdl href="/api?rsdl" rel="rsdl">
    ...
    <links>
        <link href="/api/..." rel="...">
            <request>
                <http_method>...</http_method>
                <headers>
                    <header>
                        <name>...</name>
                        <value>...</value>
                    </header>
                    ...
                </headers>
                <body>
                    <type>...</type>
                    <parameters_set>
                        <parameter required="..." type="...">
                            <name>...</name>
                        </parameter>
                        ...
                    </parameters_set>
                </body>
            </request>
            <response>
                <type>...</type>
            </response>
        </link>
        ...
    </links>
</rsdl>

表 4.6. RSDL 连接结构项

描述
linkAPI 请求的 URI,它包括一个 URI 属性(href)和一个关系类型属性(rel)。
request定义了连接所需的请求属性。
http_method访问这个连接的方法类型,它包括 REST API 访问的标准 HTTP 方法:GETPOSTPUTDELETE
headers定义 HTTP 请求的头。它包括一组 header 项,每个项中包括了一个头 namevalue 来定义这个头。
body定义 HTTP 请求的内容。它包括一个资源 typeparameter_set(包括一组 parameter 项)。每个 parameter 项都包括了一个属性来指定这个项对于请求和数据 type 是否是必需的;这个项还包括了一个 name 项来定义要修改的 Red Hat Enterprise Virtualization Manager 属性。另外,如果 type 被设置为 collection,还会有一个 parameter_set 子集。
response定义 HTTP 请求的输出。它包括一个 type 项来定义输出的资源结构。
在应用程序中使用 RSDL 作为一个方法,来映射控制 Red Hat Enterprise Virtualization 环境所需的所有连接和参数。