搭建一个RESTFUL风格的Web Service (Maven版本)

[该教程翻译自Spring官方,并进行适当删减。]

你将搭建的

你将搭建一个可以接受Http Get 请求的web service,

http://localhost:8080/greeting

并将以JSON字符串的形式返回问候,

{"id":1,"content":"Hello, World!"}

工具

一个文本编辑器,JDK1.6及以上,Maven 3.0+或者Gradle 1.11+。(本文将使用Maven)

下面是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>org.springframework</groupId>
    <artifactId>gs-rest-service</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.1.5.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <start-class>hello.Application</start-class>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>http://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

新建项目

首先你新建一个符合Maven规范的目录结构, src/main/java/hello

└── src
    └── main
        └── java
            └── hello

在hello目录下,新建一个Greeting类作为“问候”的javabean。代码清单如下:

package hello;

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}

在下面的步骤你将会看到,spring将使用Jackson JSON自动将Greeting的对象转成JSON字符串。

接下来是新建一个类做控制器。

在Spring构建一个Restful风格的web service,需要一个处理请求的控制器。

同样在hello目录,代码清单如下:

package hello;

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", required=false, defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}

写过Spring MVC的对@RequestMapping和@RequestParam等一定不陌生。

传统的MVC控制器和Restful 风格Web Service控制器的主要区别是,产生HTTP 响应的方式不同。不同于依赖视图技术将数据解析成HTML,这个控制器填充并返回一个对象。

这段代码使用Spring4.o新的注解:RestController,表明该类的每个方法返回对象而不是视图。它实际就是@Controller和@ResponseBody混合使用的简写方法。

Greeting对象会被转换成JSON字符串,这得益于Spring 的HTTP消息转换支持,你不必人工处理。由于Jackson2在classpath里,Spring的MappingJackson2HttpMessageConverter会自动完成这一工作。

尽管你可以将这个服务打包成传统的WAR文件部署到应用服务器,但下面将会创建一个独立的应用,使用main方法可以将所有东西打包到一个可执行的jar文件。并且,你将使用Sping对内嵌Tomcat servlet容器的支持,作为HTPP 运行时环境,没必要部署成一个tomcat外部实例。

package hello;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

main方法使用了SpringApplication工具类。这将告诉Spring去读取Application的元信息,并在Spring的应用上下文作为一个组件被管理。

@ComponentScan注解告诉Spring在hello包下遍历带有@Component注解的类。这将保证Spring能找到并注册GreetingController,因为它被@RestController标记,这也是@Component的一种。

@EnableAutoConfiguration注解会基于你的类加载路径的内容切换合理的默认行为。比如,因为应用要依赖内嵌版本的tomcat(tomcat-embed-core.jar),所有一个tomcat服务器会被启动并代替你进行合理的配置。再比如,因为应用要依赖Spring 的 MVC框架(spring-webmvc.jar),一个Spring MVC的DispatcherServlet将被配置并注册,不再需要web.xml文件。自动配置是很强大灵活的机制。

使用maven可以这样执行,

mvn clean package

然后,

java -jar target/gs-rest-service-0.1.0.jar

运行后无意外会出现Spring Boot结果:

在浏览器测试:

带参数的测试:

时间: 2024-11-05 00:33:33

搭建一个RESTFUL风格的Web Service (Maven版本)的相关文章

使用Restful风格的Web Service(Maven版本)

[该教程翻译自Spring官方,并进行适当删减.] 你将搭建的 你将创建的应用将使用Spring的RestTemplate来获取Facebook的Graph API的数据.(符合Restful风格) http://graph.facebook.com/pivotalsoftware 它将返回的JSON字符串为: { "id": "161112704050757", "about": "Pivotal is enabling the cr

Web Service笔记(五):CXF开发RESTful风格的Web Service

前言: 1.Web Service笔记(五):利用CXF结合Spring开发web service 2.XML学习笔记(三):Jaxb负责xml与javaBean映射 3.jax-rs详解 4.可以使用浏览器的工具调试:如 Firefox 的RESTClient 和chrome的REST Console. 一.配置Spring的配置文件 1.需要引入新的 jar 包. 2.配置 applicationContext-server.xml 文件.使用 jaxrs:server ,记得引入jaxrs

基于cxf开发restful风格的Web Service

一.写在前面 webservice一些简单的其他用法和概念,就不在这里赘述了,相信大家都可以在网上查到,我也是一个新手,写这篇文章的目的一方面是想记录自己成长的历程,另一方面是因为学习这个的时候花了点时间,希望本文章能为大家节约点时间.当然描述的可能不到位,望谅解. 二.创建项目 2.1.创建公用接口project 为了方便服务端和客户端调用接口可以先创建一个接口java project,单独建一个接口project的用处后面再说. 然后导入对应jar包,可以去cxf官网下载http://cxf

RESTful风格的Web服务框架:Swagger

Swagger与SpringMVC项目整合 为了方便的管理项目中API接口,在网上找了好多关于API接口管理的资料,感觉目前最流行的莫过于Swagger了,功能强大,UI界面漂亮,并且支持在线测试等等,所以本人仔细研究了下Swagger的使用,下面就如何将Swagger与个人的SpringMVC项目进行整合做详细说明: 最终API管理界面:  详细步骤: Step1:项目中引入相关jar包: <properties> <project.build.sourceEncoding>UT

在 Docker 上运行一个 RESTful 风格的微服务

tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/docker-restful-demo 实现构思 1. 使用 Maven 进行项目构建 2. 使用 Jersey 实现一个 RESTful 风格的微服务 3. 在 Docker 里面执行 mvn package 对项目打包 4. 在 Docker 容器里运行这个微服务 实现一个微服务 场景 & 需求

spring boot 快速搭建 基于 Restful 风格的微服务

使用 spring boot 快速搭建 基于  Restful 风格的微服务, 无spring 配置文件,纯java 工程,可以快速发布,调试项目 1.创建一个maven 工程 2. 导入如下配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

SpringBoot2.0基础案例(01):环境搭建和RestFul风格接口

一.SpringBoot 框架的特点 1.SpringBoot2.0 特点 1)SpringBoot继承了Spring优秀的基因,上手难度小 2)简化配置,提供各种默认配置来简化项目配置 3)内嵌式容器简化Web项目,简化编码 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,只需要在 pom 文件中添加如下一个 starter-web 依赖即可. <dependency> <groupId>org.springframework.b

使用Spring创建满足RESTful规范的Web Service

原文:http://spring.io/guides/gs/rest-service/ 这个指南讨论如何使用Spring的RESTful web service来创建一个"hello world"程序. 示例功能简介 使用以下方式的HTTP GET请求来访问这个Service: http://localhost:8080/greeting 使用下面greeting的JSON描述来响应这个请求: {"id":1,"content":"He