Dropwizard: 开发轻量RESTful服务

Java开发者需要一个快速 轻量无痛苦的创建一个为产品环境准备的RESTful + JSON +HTTP的web 服务, Dropwizard只需通过简单配置就能让你的类提供RESTful服务,如今已经超越SpringMVC成为轻量REST框架首选。

dropwizard

下面,展示如何使用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的值:

@GET

public 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值