自己入门Java时做过一个小型RESTful Web Service的项目,这里总结一下。

服务的数据交换格式主要採用JSON,服务为REST风格。连接採用Http协议,数据库使用MySQL,OR Mapping採用的是Hibernate.  小数据直接用URL传參,配合Restlet
的强大的 URI重写重定向。层级URI路由功能。更是十分的方便。数据大时就是用JSON。配合强大的Fastjson,解析起来也是十分迅速和便捷。

主要用的类库:

  • Restlet Framework。Java轻量级REST框架;
  • Fastjson,最快的Java Json parser,功能强大,简单易用;
  • Hibernate,Java最经常使用的OR Mapping框架;

REST是一种设计风格而不是标准,通常基于使用HTTP、URI、XML、HTML这些现有广泛流行的协议和标准,详见wikipedia.

有一点要注意的是:REST的无状态指的是连接协议,而非应用本身的状态。REST传输会包括应用的全部状态信息,可大幅减少对HTTP连接的反复请求资源消耗。

REST设计:

  • 面向资源的接口设计:如今将网络上的操作实体都作为资源来看待,同一时候URI的设计也是体现了对于资源的定位设计;
  • 抽象操作为基础的增删改查:Http中的get,put,post,delete分别相应了read,update,create,delete四种操作,实际中get方法和post方法就已经足够使用了,假设不过作为对于资源的操作。抽象成为这四种已经足够了,可是对于如今的一些复杂的业务服务接口设计,未必可以满足;

REST特点:

  • 资源是由URI来指定。
  • 对资源的操作包含获取、创建、改动和删除资源,这些操作正好相应HTTP协议提供的GET、POST、PUT和DELETE方法。
  • 通过操作资源的表现形式来操作资源;
  • 资源的表现形式则是XML或者HTML,取决于读者是机器还是人。是消费web服务的客户软件还是web浏览器。当然也能够是不论什么其它的格式。

REST要求:

  • client和server结构;
  • 连接协议具有无状态性。
  • 可以利用Cache机制增进性能。
  • 层次化的系统;
  • 随需代码 - Javascript (可选);

主要功能代码:

框架的高速上手,先理解概念并掌握主要功能,然后学会配置文件和主要类的使用。

一个框架的功能往往很之多,常常看到一些框架本身的介绍都可以写成一本厚厚的书。

可是实际项目中。要高速掌握基本的功能,须要的功能。往往框架20%的主要功能就足以满足我们80%的须要。

项目里最经常使用到类就是:ServerResource 和 Application, Router 类。

Application和Router 类:

public class MyApplication extends Application {

	//层级URI和资源绑定
public Restlet createInboundRoot() {
Router router = new Router(getContext()); // 定义router对象。用于绑定server资源
router.attach("/test", MyResource.class);
router.attach("/test/{param1}", MyResource.class);
router.attach("/test/{param1}/{param2}", MyResource.class);
return router;
}
}

ServerResource类:

public class MyResource extends ServerResource{

	@Override
protected void doInit() throws ResourceException {
// 初始化,经常初始化属性值。解码URL传过来的參数等。
}; @Get
public Representation fun1() {
//自己的方法
} @Post
public Representation fun2(Representation entity){
//自己的方法
}
}

当然。项目也使用了非常多的servlet, 配合一些其它功能的实现。

想要深入使用,还要自己去看官方的Tutorial,去Github上看有没有符合自己须要的开源码。最后推荐一篇博文:Restlet 开发实例,写的挺具体的。

Restlet+Fastjson 高速构建轻量级 Java RESTful Webservice的更多相关文章

  1. Java Restful Web Service 学习指南

    Restful是一种架构style,目前常说的有restful web service, resultful http.现在热搜榜的微服务,大多数会采用Restful方式. JAX-RS 作为一个Re ...

  2. java调用webservice,restful

    java调用webservice public String redoEsb(String loguid, String user, String comments, String newMsg, S ...

  3. 如何在Java生态圈选择一个轻量级的RESTful框架?

    在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元.微服务 ...

  4. Yii2高速构建RESTful Web服务功能简单介绍

    Yii2相比Yii1而言,一个重大的改进是内置了功能完备的RESTful支持. 其内置RESTful支持提供了例如以下功能: 使用ActiveRecord的通用接口来高速构建原型: 应答格式协商(缺省 ...

  5. 最好的8个 Java RESTful 框架

    原文出处: colobu 过去的每一年,涌现出越来越多的Java框架.就像JavaScript,每个人都认为他们知道一个好的框架的功能应该是怎么样的.连我的老祖母现在也使用 一个我从来没有听说过而且可 ...

  6. SOAP Webservice和RESTful Webservice

    http://blog.sina.com.cn/s/blog_493a845501012566.html REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的 ...

  7. Restful是什么,SOAP Webservice和RESTful Webservice

    首先,应该怀着这样一种心态来学习Restful——Restful你可以将其理解一种软件架构风格,并且诠释了Http协议的设计初衷,所以不要把他理解的那么神秘,Restful风格有好处,当然也是有坏处的 ...

  8. RESTful WebService入门(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...

  9. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

随机推荐

  1. [置顶] 提高生产力:Web开发基础平台WebCommon的设计和实现

    Web开发中,存在着各种各样的重复性的工作.为了提高开发效率,不在当码农,我在思考和实践如何搭建一个Web开发的基础平台. Web开发基础平台的目标和功能 1.提供一套基础的开发环境,整合了常用的框架 ...

  2. Swift - 多线程实现方式(2) - NSOperation和NSOperationQueue

    1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...

  3. 基于visual Studio2013解决面试题之0305广度优先搜索二叉树

     题目

  4. KMP poj

    题目来自:http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2315188.html KMP算法开始是判断字符串b是否是字符串a的子串,朴素的算法是枚举 ...

  5. Qml 写的弹出层控件(13篇博客)

    QML弹出窗口组件,灯箱效果.动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透 使用 Popup { id: popup width: 200; heigh ...

  6. 积累的VC编程小技巧之树操作

    1.如何在TreeList中加图标? [问题提出]  请问treeview控件和treectrl控件的用法有何不同呢?向如何imagelist控件中加图象呀?  [解决方法]  1)    HICON ...

  7. Android菜鸟的成长笔记(7)——什么是Activity

    原文:[置顶] Android菜鸟的成长笔记(7)——什么是Activity 前面我们做了一个小例子,在分析代码的时候我们提到了Activity,那么什么是Activity呢? Activity是An ...

  8. jsp:include怎么设置才能正确显示包含的页面呢

    1.项目的所有jsp都放在WEB-INF文件夹之下,使用的是SpirngMVC进行了过滤,jsp:include只能引入WEB-INF外部的jsp文件,对于改变后缀显示为htm的jsp的WEB-INF ...

  9. Python基础 2----Python 基础语法

    1 模块导入原理 1 模块是包含函数,类,变量的独立的Python文件 2 导入系统的模块 比如我在家目录下创建一个m.py的文件,我们导入了许多的系统模块,比如time,string等等.这边就类似 ...

  10. [置顶] Ftp客户端概要设计

    Ftp客户端概要设计 1.概述 ftp是基于TCP的文件传输协议,主要是用于控制远程文件,如下载.上传.续传.重命名.删除等.其命令是基于可见字符,易于理解的方式交互的.客户端与服务器端的交互遵循一应 ...