wadl_WADL中的JSON模式

wadl

在其他工作之间,我最近一直在审查WADL规范,以解决一些文档问题,以生成更新版本。 因为显而易见的一件事是缺少对XML以外的语言的语法支持-是的,您可以使用JSON <-> XML Schema的映射,但这对于JSON纯粹主义者而言并不令人满意。

因此,我开始研究如何在服务的WADL描述中附加JSON文档的JSON-Schema语法。 这还不是一个规范。 但是有关它可能如何始终如一地工作的建议。

现在,我主要与Jersey合作,因此,请考虑Jersey当前将为返回XML和JSON的服务生成什么。 因此,这里的服务是使用JAX-B绑定实现的,因此它们都使用包含所包含的XML-Schema参考所定义的相似结构。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02"><doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.16-SNAPSHOT 10/26/2012 09:28 AM"/><grammars><include href="xsd0.xsd"><doc title="Generated" xml:lang="en"/></include></grammars><resources base="http://localhost/"><resource path="/root"><method id="hello" name="PUT"><request><representation xmlns:m="urn:message" element="m:requestMessage"  mediaType="application/json" /><representation xmlns:m="urn:message" element="m:requestMessage" mediaType="application/xml" /></request><response><representation xmlns:m="urn:message" element="m:responseMessage" mediaType="application/json"/><representation xmlns:m="urn:message" element="m:responseMessage" mediaType="application/xml" /></response></method></resource></resources>
</application>

因此,我们考虑的第一件事是在表示形式元素上重用现有的元素属性(定义为QName),以引用导入的JSON-Schema。 除了没有元素的XML元素外,这里还显示了一个和另一个任意的名字空间。

<grammars><include href="xsd0.xsd" /><include href="application.wadl/responseMessage" /></grammars><representation element="responseMessage" mediaType="application/json"/>Orxmlns:json="http://wadl.dev.java.net/2009/02/json" <representation element="json:responseMessage" mediaType="application/json" />

问题在于,目前的JSON-Schema规范没有“ name”属性的概念,因此每个JSON-Schema都由其URI唯一标识。 从我阅读的规范中,每个JSON-Schema最多包含一个文档的定义-而不是XML-Schema中可以包含的多个类型/文档。

因此,下一个最佳建议是仅使用URI的“文件名”部分作为URI的代理。 但是当然那不一定是唯一的。 例如,我可以看到美国政府和雅虎都在这里发布了自己的“地址”微格式。

解决此问题的更好方法是引入一个新属性,幸运的是,WADL规范是在考虑到这一点而设计的,它是URI类型,可用于直接引用JSON-Schema定义。 因此,与上一个示例中的直接导入不同,我们在元素本身上具有URI属性。 “ describeby”属性名称来自JSON-Schema提议 ,与规范中原子链接上使用的rel一致。

xmlns:json="http://wadl.dev.java.net/2009/02/json-schema" xmlns:m="urn:message" <grammars><include href="xsd0.xsd" /></grammars><representation mediaType="application/json"element="m:responseMessage" json:describedby="application.wadl/responseMessage" />

的第二个优点是,该格式与依赖XML-Schema语法的工具向后兼容。 尽管对于像我这样从事工具/测试工具的人们来说,这可能只是有趣的事情。

一旦有了JSON-Schema定义,那么一些用户将想一起废除XML,因此最后这里是WADL到仅包含JSON-Schema信息的JSON文档的简单映射。 Sergey Breyozkin曾建议JSON映射仅显示json语法,而我正采用这种思维方式。 我很想听到一个想要访问XML模式的JSON映射用例。

{"doc":{"@generatedBy":"Jersey: 1.16-SNAPSHOT 10/26/2012 09:28 AM"},"resources":{"@base":"http://localhost/","resource":{"@path":"/root","method":{"@id":"hello","@name":"PUT","request":{"representation":[{"@mediaType":"application/json","@describedby":"application.wadl/requestMessage"}]},"response":{"representation":[{"@mediaType":"application/json","@describedby":"application.wadl/responseMessage"}]}}}}
}

我目前正在使用“ application / vnd.sun.wadl + json”的MIME类型来使此映射与默认的WADL MIME类型一致。 我怀疑我们将来会希望改变这种情况; 但这对于初学者来说是有用的。

因此,这都是非常有趣的,但是除非有示例实现,否则您将无法使用它。 我在Jersey和wadl2java中分别为服务器端和Java客户端生成器工作,这将是我下一篇文章的主题。 我一直在泽西团队的Pavel Bucek上研究这些实现和WADL提案,非常感谢他的支持。

参考:来自Gerard Davison博客博客的JCG合作伙伴 Gerard Davison提供的WADL中的JSON-Schema 。

翻译自: https://www.javacodegeeks.com/2012/11/json-schema-in-wadl.html

wadl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机资源管理器课件,计算机基础课件ppt-第5讲控制面板与资源管理器.pdf

第五讲控制面板资源管理器与 深入理解控制面板本章重点1、资源管理器2、控制面板3、磁盘管理4、附件5、注册表管理文件和文件夹s查看本机的内容1、双击 “我的电脑”2、双击要查看的磁盘3、双击屏幕上显示出的文件或文件夹便可打开一个文件或显示文件夹中的文件。资源管理器资源…

python中ascii码和字符的转换

将ASCII字符转换为对应的数值即‘a’-->65&#xff0c;使用ord函数,ord(a)反正&#xff0c;使用chr函数&#xff0c;将数值转换为对应的ASCII字符&#xff0c;chr(65)

Java操作MongoDB之mongodb-driver

mongodb-driver是mongo官方推出的java连接mongoDB的驱动包&#xff0c;相当于JDBC驱动。 通过一个入门的案例来了解mongodb-driver的基本使用&#xff1a; 1、查询全部记录 1.1、创建工程mongoDemo&#xff0c;引入依赖 <dependency><groupId>org.mongodb</grou…

具有Stormpath和Spring Boot的OAuth 2.0令牌管理

建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; OAuth 2.0令牌管理经常被误解并且难…

5c用计算机怎么打,再一次谈谈%5c暴库的利用 -电脑资料

再一次谈谈%5c暴库的利用技术&#xff0c;原因我只找到含糊的说法&#xff1a;/的UNICODE是%5c当提交时,IIS无法正常解析,导致暴库&#xff0c;还有很多人说不成功&#xff0c;我要说的三点&#xff1a;1。一般的错误返回页面是本地IE提供的,所以我们先得关了本地的错误页面,具…

CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法

之前有的朋友问我&#xff0c;CentOS版本怎么安装python的pip&#xff0c;我之前给出的Ubuntu下apt-get的方法 ubuntu 需要先安装下pip吧&#xff0c; apt-get install python-pip 安装requests&#xff0c; pip install requests 但是有的朋友由于是centos的&#xff0c;直接…

计算机网络原理如何修改本机mtu值,电脑的本地mtu值要怎么设置

相信很多人在玩dota2时都会出现使用wifi联网卡顿的现象&#xff0c;往往是电脑mtu值设置出现问题。下面由学习啦小编为你整理了电脑的本地mtu值要怎么设置的相关方法&#xff0c;希望对你有帮助!电脑设置mtu值的方法如下MTU值是按照TCP/IP协议传输数据报时的最大传输单元。从本…

Python 编程精选

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑为了方便查找&#xff0c;请看目录&#xff08;手机端就没有目录哦&#xff09; 注&#xff1a;本文篇幅较大&#xff0c;请耐心等待&#xff08;power by 《Python黑帽子:黑客与渗透测试编程之道 》&#xff0…

Docker 内程序时间设置,很重要

Docker 内程序时间设置&#xff0c;很重要 原文:Docker 内程序时间设置&#xff0c;很重要重要!!!!! 创建容器时候需要修改一个参数,设置tomcat的时区 -e TZ"Asia/Shanghai" -v /etc/localtime:/etc/localtime:roposted on 2019-03-02 15:15 NET未来之路 阅读(...) 评…

计算机教师专业发展论文,关于教师专业发展的计算机专业论文

1教师专业发展内涵阐述1.1专业知识发展教师的专业知识是教书育人的前提。计算机教师的专业知识包括三个方面&#xff1a;一是日常生活、人文素养等基础文化知识&#xff1b;二是教育理论、教学方法等教育学科知识&#xff1b;三是综合的计算机学科专业知识。1.2专业能力发展教师…

[BZOJ1497] [NOI2006]最大获利

Description 新的技术正冲击着手机通讯市场&#xff0c;对于各大运营商来说&#xff0c;这既是机遇&#xff0c;更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜&#xff0c;需要做太多的准备工作&#xff0c;仅就站址选择一项&#xff0c;就需要完成前期市…

谷歌guava_Google Guava –期货

谷歌guava这篇文章是我在Google Guava上的系列文章的延续&#xff0c;这次涵盖了Future。 Futures类是用于使用Future / ListenableFuture接口的静态实用程序方法的集合。 Future是已提交给ExecutorService的异步任务&#xff08;可运行或可调用&#xff09;的句柄。 Future接口…

北航计算机组成原理ppt,北航计算机组成原理课件.ppt

北航计算机组成原理课件本讲内容 透视计算机&#xff1a;计算机组成与结构总结 组成部件 内部连接 理解计算机&#xff1a;机器指令的执行过程 计算机最基本的操作与控制&#xff1a;微操作 指令的执行过程 程序的执行 计算机的时序控制方式 时序系统简介 计算机结构(Architect…

urllib2使用总结

keywords: urllib2,BeautifulSoup,cookielib 题外话: 小弟是编程爱好者&#xff0c;各位看官轻拍。 最近在使用urllib2抓取网页内容&#xff0c;在学习的过程中也查阅了不少资料,并从中收获很多。在查阅资料的过程中&#xff0c;我发现大部分资料都是建立在对urllib2的熟悉基…

Linux基础第五课——用户管理

用户管理 一个用户必须有一个主组一个用户可以拥有多个组 但是必须一个主组 其它组是临时组一个组可以拥有多个用户用户的信息放到 /etc/passwd 用户的密码 存入 /etc/shadow 组信息存到 /etc/group添加用户 add useradd shengliang 这时候会在 /etc/passwd 下生成一条记录 she…

降调软件测试自学,普通话测试及变调.ppt

普通话测试及变调(二)去声变调 当两个去声字相连&#xff0c;前面的去声字不读重音的时候&#xff0c;调值由全降变为半降&#xff0c;51变为53。 错误 汉字 介绍 注意 外地 善意 艺术 戏剧 预告 降落 锻炼 倒退 大会 自治 迫害 照相 木料 正确 “一”变调?? ?1.??“一”在…

信守承诺:JAX-RS API的基于合同的测试

自从我们谈论测试和应用有效的TDD实践以来已经有一段时间了&#xff0c;特别是与REST&#xff08;ful&#xff09; Web服务和API相关的实践。 但是&#xff0c;这个主题永远都不应忘记&#xff0c;特别是在每个人都在做微服务的世界中&#xff0c;无论它意味着什么&#xff0c;…

P2084 进制转换

原题链接 https://www.luogu.org/problemnew/show/P2084 这个题的思路就是先将输入的数字存到字符数组里&#xff0c;然后求出这一串数字中的非0元素的个数total&#xff0c;并记录最后一位非0元素的位置。输出时&#xff0c;先输出total-1个&#xff0c;最后再补上第total个&a…

关于C++ const 的全面总结

C中的const关键字的用法非常灵活&#xff0c;而使用const将大大改善程序的健壮性&#xff0c;本人根据各方面查到的资料进行总结如下&#xff0c;期望对朋友们有所帮助。 Const 是C中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型&#xff0c;常类型的变量或对象…

国家普通话水平智能测试软件,国家普通话水平智能测试系统注意事项

国家普通话水平智能测试系统注意事项导语&#xff1a;为了让考生更顺利的通过普通话考试&#xff0c;下面是小编给大家提供的国家普通话水平智能测试系统注意事项&#xff0c;大家可以参考阅读&#xff0c;更多详情请关注应届毕业生考试网。一、登录阶段&#xff1a;1. 请正确佩…