定义:
RestyGWT是一个REST服务GWT生成器和Java Object JSON数据格式转换引擎。它能够生成基于JSON的异步Restful服务代理,提供易于使用的REST API。
REST Services
RestyGWT的 Rest
Services能够生成基于JSON的异步Restful服务,和GWT中的异步类似:
public interface PizzaService extends RestService {
@POST
public void order(PizzaOrder request,
MethodCallback<OrderConfirmation> callback);
}
@POST:表示以POST方式向Server端发送数据,server端的servlet具体实现时应该是doPost()。
Java
beans可以通过JSON的编码和解码向Server端发送和从server端返回,以PizzaOrder为例:
public class PizzaOrder {
public String phone_number;
public boolean delivery;
public List<String> delivery_address = new ArrayList<String>(4);
public List<Pizza> pizzas = new ArrayList<Pizza>(10);
}
JSON形式:
{
"phone_number":null,
"delivery":true,
"delivery_address":[
"3434 Pinerun Ave.",
"Wesley Chapel, FL 33734"
],
"pizzas":[
{"quantity":1,"size":16,"crust":"thin","toppings":["ham","pineapple"]},
{"quantity":1,"size":16,"crust":"thin","toppings":["extra cheese"]}
]
}
在GWT的客户端调用server端服务:
1. 创建一个REST service 的实例,并和HTTP
URL关联起来。示例代码如下:
Resource resource = new Resource( GWT.getModuleBaseURL() + "pizza-service");
PizzaService service = GWT.create(PizzaService.class);
((RestServiceProxy)service).setResource(resource);
service.order(order, callback);
2. 使用Rest API
Resource resource = new Resource("http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=finances&format=pdf&output=json&callback=callback");
resource.jsonp().send(new JsonCallback() {
public void onSuccess(Method method, JSONValue response) {
JSONObject obj = (JSONObject) ((JSONObject) response).get("ResultSet");
RootPanel.get().add(new Label("Search Results Available: " + obj.get("totalResultsAvailable")));
}
public void onFailure(Method method, Throwable exception) {
Window.alert("Error x: " + exception);
}
});
JSON Encoder/Decoders
要实现Java
Object与JSON数据格式转换,必须定义一个接口来继承JsonEncoderDecoder接口,这样RestyGWT就可以实现Java
Object与JSON数据的转换了,使用encode和decode方法即可。
示例:
1.
首先,定义接口:
public interface PizzaOrderCodec extends JsonEncoderDecoder<PizzaOrder> {
}
2.
使用encode和decode方法:
// GWT will implement the interface for you
PizzaOrderCodec codec = GWT.create(PizzaOrderCodec.class);
// Encoding an object to json
PizzaOrder order = ...
JSONValue json = codec.encode(order);
// decoding an object to from json
PizzaOrder other = codec.decode(json);
REST API
RestyGWT提供了易于使用的REST
API,支持所有的HTTP
methods,在调用过程中用参数来设置HTTP
Accept 和
Content-Type header,并且可以设置response
code和request
timeout。
示例:
Resource resource = new Resource( GWT.getModuleBaseURL() + "pizza-service");
JSONValue request = ...
resource.post().json(request).send(new JsonCallback() {
public void onSuccess(Method method, JSONValue response) {
System.out.println(response);
}
public void onFailure(Method method, Throwable exception) {
Window.alert("Error: "+exception);
}
});
每次请求时必须创建一个新的Method
对象,由下面的HTTP
methods产生:
resource.head(); resource.get(); resource.put(); resource.post(); resource.delete()
可以通过下面的方法来设置Content-Type
header:
method.text(String data) // HTTP request body为text
method.xml(Document data) // HTTP request body为xml
method.json(JSONValue data) // HTTP request body为json
可以通过下面的方法来设置Accept
header(与Content-Type
类似):
method.send(TextCallback callback)
method.send(JsonCallback callback)
method.send(XmlCallback callback)
分享到:
相关推荐
RestyGWT是一个REST服务GWT生成器和Java Object与JSON数据格式转换引擎。它能够生成基于JSON的异步Restful服务代理,提供易于使用的REST API。 示例代码: Resource resource = new Resource( GWT....
RestyGWT RxJava适配器 如果创建此 :worried_face: ... @RestyService @Path ( " /greeting-service " ) public interface GreetingService { @POST Observable< Overlay> overlay ( Overlay name ); @POST ...
它包含一个稍微修改过的 dropwizard 入门示例版本,以及一个使用此 API 的简单的基于 RestyGWT 的应用程序。 GWT 应用程序的“捆绑”感觉有点骇人听闻,但它确实有效。 拉请求是最受欢迎的!如何运行它mvn 包 cd ...
我还没有将其更新为“超级开发模式”,但抱歉:( 使用 Jersey ( 2.7 ) 和 RestyGWT 的 GWT REST 应用程序模板代码的详细信息可以在找到要运行该项目,请将其克隆到您的计算机,然后 mvn clean installmvn gwt:run
gwt-test-json-speed-jsniJSON编码器的测试速度选定的框架[AutoBeans]( ) [RestyGWT]( ) [JSNI叠加层]( )JSON树结构单父节点,很少的属性,以及单个的,较大的子列表,每个子节点都有很少的属性。初步结果(在...
RestyGWT是用于REST服务和JSON编码的数据传输对象的GWT生成器。 特征 生成基于异步Restful JSON的服务代理 Java对象到JSON编码/解码 易于使用的REST API 发行 mvn版本:准备-Prun-examples mvn版本:执行
建立在Errai Message Bus和GwtBootstrap3之上的简单... There are several ways how to manage this like GWT-RPC, RequestBuilder, RequestFactory or RestyGWT, but MessageBus allows us to transparently simpli