博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RestyGWT简介
阅读量:6006 次
发布时间:2019-06-20

本文共 3488 字,大约阅读时间需要 11 分钟。

hot3.png

定义: 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
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
delivery_address = new ArrayList
(4); public List
pizzas = new ArrayList
(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
{}
2. 使用encode和decode方法:

// GWT will implement the interface for youPizzaOrderCodec codec = GWT.create(PizzaOrderCodec.class);// Encoding an object to jsonPizzaOrder order = ... JSONValue json = codec.encode(order);// decoding an object to from jsonPizzaOrder 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为textmethod.xml(Document data)       // HTTP request body为xmlmethod.json(JSONValue data)      // HTTP request body为json
可以通过下面的方法来设置Accept header(与Content-Type 类似):

method.send(TextCallback callback)method.send(JsonCallback callback)method.send(XmlCallback callback)

转载于:https://my.oschina.net/angel243/blog/125221

你可能感兴趣的文章
新浪微博的账号登录及api操作
查看>>
淘宝code
查看>>
机器学习-决策树
查看>>
内存池技术畅想
查看>>
计算机网络笔试面试常考考点
查看>>
MySQL Binlog的介绍
查看>>
[c++] 用宏定义一个函数
查看>>
微软语音输入法的图标隐藏了在怎么显示出来
查看>>
安装express
查看>>
创建服务类PO
查看>>
使用 Windows PowerShell 连接到 Lync Online
查看>>
作业1 对这门课的希望和自己的目标
查看>>
python基础知识
查看>>
python - os.path模块
查看>>
文件操作IO
查看>>
ML_Scaling to Huge Datasets & Online Learning
查看>>
zookeeper的安装与使用
查看>>
php基础知识【函数】(5)正则preg
查看>>
C# 接口的作用浅谈举例
查看>>
python字符串内建函数
查看>>