基于 REST 构建的远程代理 Juneau

基于 REST 构建的远程代理 Juneau

Apache
Java
跨平台
Apache
2016-10-27
达尔文

Juneau

Apache Juneau 是Apache Software Foundation (ASF)开发的一款项目,由Apache Incubator PMC赞助。

关于

  • 使用通用框架将POJO编组到各种内容类型的工具包。

  • REST服务器API,通过使用POJO创建基于Swagger的Self-documenting REST接口。

  • 通过使用POJO与REST接口进行交互的REST客户端API。

  • 基于REST构建的远程代理API。

  • 一个复杂的INI配置文件API。

  • REST微服务API,结合了上述所有功能,用于创建以毫秒为单位启动的轻量级独立REST接口。

实例

核心库包括易于使用和可定制的序列化器和解析器。 Javadoc中提供了许多示例。默认序列化器通常可以用于在单行代码中的serializers POJOs :

// A simple POJO class
	public class Person {		public String name = "John Smith";		public int age = 21;
	}	
	// Serialize a bean to JSON, XML, or HTML
	Person p = new Person();	
	// Produces:
	// "{name:'John Smith',age:21}"
	String laxJson = JsonSerializer.DEFAULT_LAX.serialize(p);	
	// Produces:
	// "{"name":"John Smith","age":21}"
	String strictJson = JsonSerializer.DEFAULT.serialize(p);	
	// Produces:
	// <object>
	//   <name>John Smith</name>
	//   <age>21</age>
	// </object><
	String xml = XmlSerializer.DEFAULT_SIMPLE.serialize(p);	
	// Produces:
	// <table>
	//   <tr><td>name</td><td>John Smith</td></tr>
	//   <tr><td>age</td><td>21</td></tr>
	// </table>
	String html = HtmlSerializer.DEFAULT.serialize(p);	
	// Produces:
	// name=John+Smith&age=$n(21)
	String urlEncoding = UrlEncodingSerializer.DEFAULT.serialize(p);	// Produces:
	// $o(name=John Smith,age=$n(21))
	String uon = UonSerializer.DEFAULT.serialize(p);	// Produces:
	// 82 A4 name AA 4A John Smith 68 A3 age 15
	byte[] messagePack = MsgPackSerializer.DEFAULT.serialize(p);	// Produces:
	// <rdf:RDF
	//  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	//  xmlns:jp="http://www.ibm.com/juneaubp/"
	//  xmlns:j="http://www.ibm.com/juneau/">
	// 	<rdf:Description>
	// 		<jp:name>John Smith</jp:name>
	// 		<jp:age>21</jp:age>
	// 	</rdf:Description>
	// </rdf:RDF>
	String rdfXml = RdfSerializer.DEFAULT_XMLABBREV.serialize(p);	
	// Produces:
	// @prefix jp:      <http://www.ibm.com/juneaubp/> .
	// @prefix j:       <http://www.ibm.com/juneau/> .
	//	[]    jp:age  "21" ;
	//	      jp:name "John Smith" .
	String rdfN3 = RdfSerializer.DEFAULT_N3.serialize(p);	// Produces:
	// _:A3bf53c85X3aX157cf407e2dX3aXX2dX7ffd <http://www.ibm.com/juneaubp/name> "John Smith" .
	// _:A3bf53c85X3aX157cf407e2dX3aXX2dX7ffd <http://www.ibm.com/juneaubp/age> "21" .
	String rdfNTriple = RdfSerializer.DEFAULT_NTRIPLE.serialize(p);

解析POJO操作也很简单:

// Use one of the predefined parsers.
	ReaderParser parser = JsonParser.DEFAULT;
	
	// Parse a JSON object (creates a generic ObjectMap).
	String json = "{name:'John Smith',age:21}";
	Map m1 = parser.parse(json, Map.class);
	
	// Parse a JSON string.
	json = "'foobar'";
	String s2 = parser.parse(json, String.class);
	
	// Parse a JSON number as a Long or Float.
	json = "123";
	Long l3 = parser.parse(json, Long.class);
	Float f3 = parser.parse(json, Float.class);
	
	// Parse a JSON object as a bean.
	json = "{name:'John Smith',age:21}";
	Person p4 = parser.parse(json, Person.class);
	
	// Parse a JSON object as a HashMap<String,Person>.
	json = "{a:{name:'John Smith',age:21},b:{name:'Joe Smith',age:42}}";
	Map<String,Person> m5 = parser.parseMap(json, HashMap.class, String.class, Person.class)
	
	// Parse a JSON array of integers as a Collection of Integers or int[] array.
	json = "[1,2,3]";
	List<Integer> l6 = parser.parseCollection(json, LinkedList.class, Integer.class);
	int[] i6 = parser.parse(json, int[].class);
的码云指数为
超过 的项目
加载中

评论(1)

电磁怪兽
电磁怪兽
@红薯 项目的语言分组错了吧

Apache Juneau 8.0.0 发布,改进微服务 API

Apache Juneau 8.0.0 发布了,Juneau 是一个多功能的 Java 生态系统,其功能包括 POJO 编组、用于序列化和解析 HTML5、Swagger 与 ATOM 等语言的 DTO、配置 API、通用 REST 服务器/客户端 AP...

01/03 07:24

Apache Juneau 7.2.0 发布,基于 REST 构建的远程代理

Apache Juneau 7.2.0 发布了,Apache Juneau 是 Apache Software Foundation (ASF) 开发的一个项目,由 Apache Incubator PMC 赞助。 简介 使用通用框架将 POJO 编组到各种内容类型的工具包。...

2018/09/30 07:17

REST 微服务框架 Juneau 升级为 Apache 顶级项目

Apache 软件基金会宣布 Apache Juneau 孵化成功,升级为顶级项目。 Apache Juneau 是一个聚合框架, 允许开发者编组 POJO(普通 Java 对象)和开发 REST(表征状态转移)微服务和 API ,目前...

2017/11/01 08:10

Apache Juneau 6.4.0 发布,远程代理

Apache Juneau 6.4.0 发布了。主要更新内容如下: Improvements to swap support. New Surrogate interface for identifying surrogate classes. Serializers can now serialize to StringBu...

2017/10/06 07:24

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

Have two children act as th

Have two children act as th

2015/06/16 14:24
2
0
Python基本数据类型之时间

1.什么是时间数据类型 Python中表示时间类型的数据结构为时间数据类型; 2.time模块 import time # 获取当前时间的时间戳 print(time.time()) #输出:1548742426.1698806 # 返回当前时间的元...

02/19 18:14
0
0
java.util.TimeZone简介

java.util.TimeZone类 的实例包含了一个与格林威治标准时间(GMT)相比较得出的以微秒为单位的时区偏移量,而且它还处理夏令时。要获得一个所有支持的进区的列表,你可以使用 方法TimeZone....

2016/02/01 15:23
31
1
Joda-Time Formatting & Time Zones

# The pattern letters Symbol Meaning Presentation Examples ------ ------- ------------ ------- G era text AD C century of era (>=0) number 20 Y year of era (>=0) year 1996 x wee...

2015/12/30 15:41
41
0
2000个软件开发领域的高频特殊词及精选例句(六)

2000个软件开发领域的高频特殊词及精选例句

2015/03/20 23:38
139
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部