Dropwizard: 开发轻量RESTful服务
来源:互联网 发布:苹果版java模拟器 编辑:程序博客网 时间:2024/05/16 12:54
Java开发者需要一个快速 轻量无痛苦的创建一个为产品环境准备的RESTful + JSON +HTTP的web 服务,Dropwizard只需通过简单配置就能让你的类提供RESTful服务,如今已经超越SpringMVC成为轻量REST框架首选。
下面,展示如何使用Dropwizard开发一个轻量的RESTful服务。首先,配置Maven依赖:
<dependency> <groupId>com.yammer.dropwizard</groupId> <artifactId>dropwizard-core</artifactId> <version>0.6.2</version></dependency>
案例:让我们返回一个给定的时区的当前日期和时间的Web服务。如果用户不指定时区就使用缺省默认的。
配置
我们在配置一个time-service.yml文件缺省时区的配置如下:
defaultTimezone: UTC
Dropwizard 会加载这个配置然后分析校验,然后将其转为对象,我们要做的就是指定一个类:
public class TimezoneConfiguration extends Configuration { @NotEmpty @JsonProperty private String defaultTimezone; public String getDefaultTimezone() { return defaultTimezone; }}
服务输出
我们的Web服务输出的格式如下:
{ "time": "2014-02-04 13:45:02" }
其相应的类如下:
public class Time { private final String time; public Time(String time) { this.time = time; } public String getTime() { return time; }}
资源Resource
下面我们要为我们的Web服务指定URL路径为/time 我们需要指定一个资源返回JSON:@Path("/time")@Produces(MediaType.APPLICATION_JSON)public class TimeResource {}
在这个类型中,我们进行如下处理:处理来自客户端指定的时区,如果没有指定使用缺省的时区体会,用当前时区格式化日期和时间。
增加一个方法处理GET方式,从/time获得查询参数timezone的值:
@GETpublic Time getTime(@QueryParam("timezone") String timezone) {}完整代码如:public class TimeResource { private final String defaultTimezone; public TimeResource(String defaultTimezone) { this.defaultTimezone = defaultTimezone; } @GET public Time getTime(@QueryParam("timezone") Optional timezone) { DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); TimeZone timeZone = TimeZone.getTimeZone(timezone.or(defaultTimezone)); formatter.setTimeZone(timeZone); String formatted = formatter.format(new Date()); return new Time(formatted); }}
服务
端点TimeService代码如下:
public class TimeService extends Service { public static void main(String[] args) throws Exception { new TimeService().run(args); } @Override public void run(TimezoneConfiguration config, Environment environment) { String defaultTimezone = config.getDefaultTimezone(); TimeResource timeResource = new TimeResource(defaultTimezone); environment.addResource(timeResource); } @Override public void initialize(Bootstrap timezoneConfigurationBootstrap) { }}
就是这样!我们刚刚写了一个Dropwizard为基础的Web服务,而无需头脑麻木的样板或一堆XML配置。
直接通过命令行可以运行这个Web服务:
java -cp libraries/* name.christianson.mike.TimeService server time-service.yml
通过浏览器浏览:
http://localhost:8080/time?timezone=MST
阅读全文
0 0
- Dropwizard: 开发轻量RESTful服务
- Dropwizard: 开发轻量RESTful服务
- Dropwizard - 开发Java RESTful Web服务
- Heroku:快速部署Dropwizard开发的RESTful Service
- Notepad++ 打造轻量开发环境
- Android开发 轻量缓存框架--ASimpleCache
- 轻量地,轻量地,轻量地
- Python with Django 充满活力的轻量Web开发平台
- iOS开发必备工具:SimpleMind轻量思维导图
- Source Insight开发PHP程序(轻量强大
- Java_J2EE_轻量_J2EE轻量级开发环境配置;
- 轻量web服务器开发日记01-antweb服务器介绍
- 轻量web服务器开发日记05-配置文件的实现
- 5款移动开发轻量jQuery的替代品
- 原生JS开发的轻量简便星级评分
- 自己使用的一个.NET轻量开发结构
- Android开发——WebView轻量缓存优化
- Struts 2 开发 RESTful 服务
- 以人为镜
- 转】M1卡密钥破解,收藏
- Spring自动扫描和管理Bean
- 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object)
- 深入Android MediaPlayer的使用方法详解
- Dropwizard: 开发轻量RESTful服务
- Maximum_Subarray
- 项目中常见的一些问题
- popupwindow弹窗,在实际页面中常见的+号或者x号的弹出
- plsql链接oracle无监听程序问题
- Angular详解
- 当世界上只剩下一个Java程序员
- 10 个 Java 程序员容易犯的错误
- git push不上去该怎么解决