这是我能想到的最简单的方法,它只需要 Java、 Gradle和文本编辑器即可实现功能齐全的 REST API 。在干净的项目目录中创建两个文件,如下所示:
构建.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',
)
}
src/main/java/org/example/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; }
}
}
一旦这两个文件就位,gradle tomcatRunWar
将启动您的 REST API,并http://localhost:8080/fastest-web-service/
在浏览器中导航到将为您提供“Hello World”JSON 消息。如果您随后发布类似的 JSON,例如使用 curl 或Poster指定 Content-Type 为“application/json”的{"message": "something else"}
相同 URL ,则该新对象将被存储并在连续的 GET 请求中返回。这只是一个非常简单的示例,但涵盖了 JSON API 的许多基础知识。
IDE:您可以使用任何常见的 Java IDE 轻松地进一步开发它。IntelliJ IDEA和Eclipse的社区版都是流行的免费 IDE。<opinion>
IDEA 更胜一筹,终极版比普通 Java 开发人员的个人许可证成本高出 110%。</opinion>
技术栈:JAX-RS是用 Java 编写 REST API 的领先方式。选择任何实现。此示例使用Jersey,参考实现。如果您只需要一个简单的 API 来公开已经编写的逻辑,那么 Spring 可能会大材小用。它带来的复杂性超出了您的需要。另一方面,如果你需要一个更灵活、更强大的框架,它对世界上几乎所有的东西都有更多的内置支持,那么 Spring 可能就是你的选择。
服务器:支持 Servlet 3.0 的Jetty或Tomcat 。或多或少不可能有任何原因。