`
xuanzhui
  • 浏览: 200583 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Dropwizard实现一个最简单的REST

    博客分类:
  • Java
阅读更多

DropWizard 

http://www.dropwizard.io/0.9.2/docs/getting-started.html

Jetty for HTTP

Jersey for REST

官方说法 capable of doing 30,000-50,000 requests per second

 

定义依赖

<dependencies>
    <dependency>
        <groupId>io.dropwizard</groupId>
        <artifactId>dropwizard-core</artifactId>
        <version>${dropwizard.version}</version>
    </dependency>
</dependencies>

 

实现

最核心的类Resource,定义路径和方法

import com.google.common.base.Optional;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

/**
 * Created by xuanzhui on 2016/3/21.
 */
@Path("/hello")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
    @GET
    public String sayHello(@QueryParam("name") Optional<String> name) {
        return "Hello " + name.or("unknown");
    }
}

 

定义启动的类Application

import io.dropwizard.Application;
import io.dropwizard.Configuration;
import io.dropwizard.setup.Environment;

/**
 * Created by xuanzhui on 2016/3/21.
 */
public class HelloWorldApplication extends Application<Configuration> {
    public static void main(String[] args) throws Exception {
        new HelloWorldApplication().run(new String[] { "server" });
    }

    @Override
    public void run(Configuration configuration, Environment environment) throws Exception {
        environment.jersey().register(new HelloWorldResource());
    }
}

 

直接运行Application,即可通过 localhost:8080/hello 访问

 

打包

打包出一个jar,使其包含全部的依赖,最核心的是pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.xz</groupId>
    <artifactId>DropWizardSample</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <dropwizard.version>0.9.2</dropwizard.version>
        <jdk.version>1.8</jdk.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>io.dropwizard</groupId>
            <artifactId>dropwizard-core</artifactId>
            <version>${dropwizard.version}</version>
        </dependency>
    </dependencies>

    <build>
    <finalName>DropWizardSample</finalName>
    <plugins>
        <!-- Set a compiler level -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>

        <!-- Maven Shade Plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <configuration>
                <createDependencyReducedPom>true</createDependencyReducedPom>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>
                </filters>
            </configuration>
            <executions>
                <!-- Run shade goal on package phase -->
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <!-- important for RS -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            <!-- add Main-Class to manifest file -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>cn.xz.HelloWorldApplication</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    </build>
</project>

 

通过maven package生成fat/uber jar

运行java -jar DropWizardSample.jar,即可通过 localhost:8080/hello 访问

 

 

 

分享到:
评论

相关推荐

    dropwizard一个非常简单的库用于构建生产就绪RESTWeb服务

    Dropwizard是一个基于Java的开源框架,专为快速构建高质量、生产级别的RESTful Web服务而设计。这个框架集合了多个成熟的Java库,如Jetty(HTTP服务器)、Jackson(JSON处理)、Hibernate(ORM)和 Metrics(监控)...

    link-rest-dropwizard:一个简单的项目,演示将LinkRest与Dropwizard一起使用

    运行一个简单的例子上应用 。 先决条件: Java 1.8或更高版本。 Apache Maven。 这是运行它的方法: git clone https://github.com/andrus/link-rest-dropwizard.git cd link-rest-dropwizard mvn package java...

    dropwizard-rest-api

    该示例代码演示了使用dropwizard的简单REST API。 堆 Dropwizard Gradle PostgreSQL 赫鲁库 它使用Gradle进行构建,并具有用于部署到Heroku上的配置。 它以Heroku插件的形式连接到Postgresql。 REST API Name...

    C# 实现Rest服务接口,含实现文档

    - **资源导向**:每个URL代表一个资源,通过HTTP方法(GET、POST、PUT、DELETE等)操作资源。 - **无状态**:每次请求包含所有必要的信息,服务器不保存客户端状态。 - **缓存机制**:可选支持HTTP缓存策略,提高...

    REST框架简单实现

    在给定的描述中,提到的是使用简单的Servlet实现REST框架。Servlet是Java中用于处理HTTP请求的组件,它可以被用来构建动态Web应用程序。下面我们将深入探讨如何利用Servlet实现RESTful API。 首先,了解REST的基本...

    jersey实现简单的rest接口

    至此,你已经成功地使用Jersey实现了一个简单的REST接口,能够返回JSON数据。 进一步探索Jersey,你可以学习如何处理POST、PUT、DELETE请求,如何进行参数绑定,使用过滤器和拦截器,以及如何利用JAXB或Jackson进行...

    dropwizard-template:一个简单的 dropwizard 项目模板

    此应用程序包含一个可选 DB API 模块的示例。 提供的示例说明了可用的一些功能,并演示了如何在 Dropwizard 中使用这些功能。 此数据库示例由以下类组成: PersonDAO说明了在 Hibernate 的帮助下使用数据访问对象...

    MyEclipse REST Web Service 简单的实现例子

    本篇将深入探讨如何利用MyEclipse搭建一个简单的REST Web Service项目。 【描述】:在MyEclipse中创建RESTful Web服务的步骤并不复杂,适合初学者快速入门。我们将通过一个实际的例子,从创建项目、定义服务接口到...

    开发rest的简单例子

    在这个“开发REST的简单例子”中,我们将探讨如何使用Spring框架来创建一个RESTful API。 首先,让我们了解REST的基本原则: 1. 客户端-服务器架构:客户端和服务器之间有明确的职责划分,客户端负责用户界面和用户...

    REST WebService简单应用

    在"REST WebService简单应用"这个主题中,可能涉及的知识点包括如何创建一个简单的RESTful服务,使用JAX-RS(Java API for RESTful Web Services)框架,这是一个Java平台上的REST实现。JAX-RS提供了一种声明式的...

    wcfrest的实现

    WCF REST(Representational State Transfer)是WCF的一个扩展,专门用于构建RESTful服务。REST是一种轻量级的架构风格,常用于Web服务设计,强调资源的识别和通过HTTP动词(GET、POST、PUT、DELETE等)进行操作。 ...

    WCF_REST实现

    例如,一个简单的UriTemplate可以是`"GetCustomer/{customerId}"`,这里的`{customerId}`是一个占位符,实际请求时会被替换为客户ID值。通过这种方式,我们可以为不同的客户资源创建不同的URI,符合RESTful设计原则...

    致远OA开发REST远程接口实现发送表单

    以下是一个简单的Java代码示例,展示了如何使用HttpClient发送POST请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(...

    RESTful Web Services with Dropwizard.pdf

    Dropwizard是一个开源的Java框架,它用于构建支持RESTful架构的服务。这种架构允许开发者构建可互操作的Web服务,这些服务通常用于Web API的开发。RESTful API是一组由网络(通常是Web)通过HTTP协议提供服务的规则...

    dropwizard-pac4j:用于使用pac4j保护REST端点的Dropwizard软件包

    dropwizard-pac4j 一个软件包,用于使用保护REST端点。 新版本5.0.0基于Dropwizard v2.x(JDK 11),而先前版本则基于Dropwizardv1.x。用法dropwizard-pac4j提供了两个必须集成到应用程序中的组件: 应用程序配置...

    Java_Dropwizard_REST_API:Java Dropwizard REST API

    Java Dropwizard REST API 是一个基于Java开发的高效且强大的框架,用于快速构建高质量的RESTful Web服务。Dropwizard集合了多个成熟的开源库,为开发者提供了一站式解决方案,包括网络服务器、JSON处理、数据库连接...

    Asp.net 实现 Rest服务接口

    通过以上步骤,你可以在ASP.NET中创建一个完整的REST服务接口,为客户端提供JSON或Stream数据。在实际项目中,还需要考虑安全、性能优化、版本控制等多个方面。提供的`Asp.net编写Rest服务接口.docx`文档可能包含了...

    java rest api入门实例

    目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找...

    dropwizard-guice-jpa:使用Hibernate作为JPA实现的简单Dropwizard GuicePersist应用程序

    该示例是一个简单的RESTful接口,可轻松管理任务计划器。 使用 v1.1.0框架 通过实现依赖注入 通过实现JPA 作为内存数据库 进行集成测试 和提供的API文档 提供的数据库迁移 作为容器化解决方案 使用HAL实现将库...

    facebook rest api java简单实现

    在Java中,Facebook4J是一个流行的库,它提供了一个简单的API来调用Facebook的REST API。使用Facebook4J,你需要先在Facebook开发者平台上注册应用,获取App ID和App Secret。然后,通过这些信息创建FacebookConfig...

Global site tag (gtag.js) - Google Analytics