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,如下所示.所有档案都如下所示:
<?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)
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)
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)
这有多快?
这是我能想到的最简单的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 IDEA和Eclipse的Community Edition 都是流行的免费IDE.<opinion>IDEA非常优越,终极版的价格是普通Java开发人员个人许可的110%.</opinion>
技术堆栈:JAX-RS是用Java编写REST API的主要方式.选择任何实现.此示例使用Jersey,参考实现.如果您只需要一个简单的API来公开已经编写的逻辑,那么Spring可能会有点过分.它带来了比你需要的更复杂的复杂性.另一方面,如果你需要一个更灵活,更强大的框架,对世界上几乎所有的东西都有更多的内置支持,那么Spring可能只是门票.
服务器:支持Servlet 3.0的Jetty或Tomcat.任何事情都不太可能或多或少.
| 归档时间: |
|
| 查看次数: |
8519 次 |
| 最近记录: |