使用Java站起来使用REST服务的最快方法是什么?

hyp*_*ink 11 java rest spring json web-services

我在Java中编写了一些实用方法,用于针对服务创建测试数据.我的几个具有相同用例的同事认为如果他们可以重用它会很酷,但他们分别用Perl和Python编写测试.所以我想要站起来展示这些方法的JSON REST服务.

我在编写网络应用程序方面经验有限.什么是站起来部署我的服务的最快方式?

我正在考虑使用eclipse/spring来实现它,并且使用ant来部署Jetty容器.但我想听听你对此的经历.此外,似乎某些IDE /插件对某些技术的支持比其他技术更好.所以我想听听IDE/Plugins + J2EE技术​​堆栈+服务器(如果重要的话)是我的用例和原因的良好组合.我想坚持使用开源软件.

acd*_*ior 12

我相信使用Maven可以让你尽可能快地提升你.这是你如何做到的.

它使用JAX-RS 的RESTEasy实现(用于RESTful Web服务Java API,Java EE 6的官方部分).

这是一个具有最小结构的java war maven项目.这些是文件:

-pom.xml
-src
 |
  --main
    |
     --java
       |
        --rest
          |
           --HelloResource.java
           --JaxRsActivator.java
Run Code Online (Sandbox Code Playgroud)

我打电话给它simpleRest,如下所示.所有档案都如下所示:

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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>simpleRest</groupId>
    <artifactId>simpleRest</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>2.3.1.GA</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <!-- So maven doesn't require web.xml -->
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)

HelloResource.java

package rest;

import java.util.Date;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/hello")
public class HelloResource {
    @GET
    @Produces("text/plain")
    public String helloResource() {
        return "Hello! It's "+new Date();
    }
}
Run Code Online (Sandbox Code Playgroud)

JaxRsActivator.java:

package rest;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/rest")
public class JaxRsActivator extends Application {

}
Run Code Online (Sandbox Code Playgroud)

这会产生一个simpleRest.war(通过mvn clean package).您可以将它部署到刚安装的JBoss AS 7.1.1.Final(只是将war文件放在deploy文件夹中)或Tomcat.

之后,URL可按预期使用:

http://127.0.0.1:8080/simpleRest/rest/hello
Run Code Online (Sandbox Code Playgroud)

这有多快?


Rya*_*art 5

这是我能想到的最简单的REST API,只需要Java,Gradle和文本编辑器.在干净的项目目录中创建两个文件,如下所示:

的build.gradle

buildscript {
    repositories { mavenCentral() }
    dependencies {
        classpath 'org.gradle.api.plugins:gradle-tomcat-plugin:0.9.8'
    }
}
apply plugin: 'tomcat'

repositories { mavenCentral() }
dependencies {
    compile(
        'com.sun.jersey:jersey-core:1.17',
        'com.sun.jersey:jersey-server:1.17',
        'com.sun.jersey:jersey-servlet:1.17',
        'com.sun.jersey:jersey-json:1.17',
    )
    tomcat(
        'org.apache.tomcat:tomcat-catalina:7.0.40',
        'org.apache.tomcat:tomcat-coyote:7.0.40',
        'org.apache.tomcat:tomcat-jasper:7.0.40',
    )
}
Run Code Online (Sandbox Code Playgroud)

的src /主/ JAVA /组织/示例/ TheApplication.java

package org.example;

import com.sun.jersey.api.core.ClassNamesResourceConfig;
import javax.ws.rs.*;
import javax.ws.rs.core.Response;
import javax.xml.bind.annotation.XmlRootElement;

@Path("/")
@ApplicationPath("/")
public class TheApplication extends ClassNamesResourceConfig {
    public TheApplication() { super(TheApplication.class); }

    static Foo foo = new Foo();

    @GET @Produces("application/json")
    public Foo getFoo() {
        return foo;
    }

    @POST @Consumes("application/json")
    public Response setFoo(Foo foo) {
        TheApplication.foo = foo;
        return Response.ok().entity("Stored it!").build();
    }

    @XmlRootElement
    static class Foo {
        private String message = "Hello World";
        public String getMessage() { return message; }
        public void setMessage(String message) { this.message = message; }
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦这两个文件到位,gradle tomcatRunWar将启动您的REST API,并http://localhost:8080/fastest-web-service/在浏览器中导航将获得"Hello World"JSON消息.如果然后POST类似的JSON,就像{"message": "something else"}使用curl或Poster指定Content-Type为"application/json"的那个URL一样,那个新对象将被存储并在连续的GET请求中返回.它只是一个非常简单的示例,但涵盖了JSON API的许多基础知识.

IDE:您可以使用任何常见的Java IDE轻松进一步开发.IntelliJ IDEAEclipse的Community Edition 都是流行的免费IDE.<opinion>IDEA非常优越,终极版的价格是普通Java开发人员个人许可的110%.</opinion>

技术堆栈:JAX-RS是用Java编写REST API的主要方式.选择任何实现.此示例使用Jersey,参考实现.如果您只需要一个简单的API来公开已经编写的逻辑,那么Spring可能会有点过分.它带来了比你需要的更复杂的复杂性.另一方面,如果你需要一个更灵活,更强大的框架,对世界上几乎所有的东西都有更多的内置支持,那么Spring可能只是门票.

服务器:支持Servlet 3.0的JettyTomcat.任何事情都不太可能或多或少.