创建资源类

假设你已经设置了项目和构建系统,你可以创建Web服务。

通过考虑服务交互来开始这个过程。

该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数。该GET请求应该返回200 OK在表示问候的身体与JSON响应。它应该看起来像这样:

{

"id": 1,

"content": "Hello, World!"

}

该id字段是问候语的唯一标识符,是问候语content的文本表示。

要为问候语表示建模,请创建资源表示形式类。提供一个普通的旧java对象,其中包含id和content数据的字段,构造函数和访问器:

@Data

@AllArgsConstructor

public class Greeting {

private final long id;

private final String content;

}

正如你在下面的步骤中看到的,Spring使用Jackson JSON库自动将类型实例Greeting封送到JSON中。

创建资源控制器

在Spring构建RESTful Web服务的方法中,HTTP请求由控制器处理。这些组件很容易通过@RestController注释来识别,GreetingController下面通过返回类的新实例来处理GET请求:

@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", defaultValue = "World") String name){

return new Greeting(counter.incrementAndGet(),String.format(template,name));

}

}

这个控制器简洁而简单,但引擎下有很多东西,让我们一步一步地分解它。

所述@RequestMapping注释可以确保HTTP请求/greeting被映射到greeting()方法。

上面的示例未指定GETvs. PUT,POST等等,因为@RequestMapping默认情况下映射所有HTTP操作。使用@RequestMapping(method=GET)缩小这种映射。

@RequestParam将查询字符串参数的值绑定name到方法的name参数中greeting()。如果name请求中不存在该参数,defaultValue则使用“World”。

方法体的实现基于来自的下一个值创建并返回Greeting具有id和content属性的新对象,并使用问候counter格式化给定name的格式template。

传统MVC控制器和上面的RESTful Web服务控制器之间的关键区别在于创建HTTP响应主体的方式。这个RESTful Web服务控制器只是填充并返回一个对象,而不是依靠视图技术来执行将问候数据的服务器端呈现为HTML Greeting。对象数据将作为JSON直接写入HTTP响应。

此代码使用Spring 4的新@RestController注释,它将类标记为控制器,其中每个方法都返回一个域对象而不是视图。它是速记@Controller和@ResponseBody拼凑在一起的。

该Greeting对象必须转换为JSON。由于Spring的HTTP消息转换器支持,您无需手动执行此转换。因为Jackson 2在类路径上,所以MappingJackson2HttpMessageConverter会自动选择Spring 来将Greeting实例转换为JSON。

使应用程序可执行

虽然可以将此服务打包为传统的WAR文件以部署到外部应用程序服务器,但下面演示的更简单的方法创建了一个独立的应用程序。您将所有内容打包在一个可执行的JAR文件中,由一个好的旧Java main()方法驱动。在此过程中,您使用Spring的支持将Tomcat servlet容器嵌入为HTTP运行时,而不是部署到外部实例。

@SpringBootApplication

public class RestfulWebApplication {

public static void main(String[] args) {

SpringApplication.run(RestfulWebApplication.class, args);

}

}

@SpringBootApplication 是一个便利注释,添加了以下所有内容:

@Configuration 标记该类作为应用程序上下文的bean定义的源。

@EnableAutoConfiguration 告诉Spring Boot开始根据类路径设置,其他bean和各种属性设置添加bean。

通常你会添加@EnableWebMvc一个Spring MVC应用程序,但Spring Boot会在类路径上看到spring-webmvc时自动添加它。这会将应用程序标记为Web应用程序并激活关键行为,例如设置a DispatcherServlet.

@ComponentScan告诉Spring在包中寻找其他组件,配置和服务hello,允许它找到控制器。

该main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。您是否注意到没有一行XML?也没有web.xml文件。此Web应用程序是100%纯Java,您无需处理配置任何管道或基础结构。

构建可执行的JAR

您可以使用Gradle或Maven从命令行运行该应用程序。或者,您可以构建一个包含所有必需依赖项,类和资源的可执行JAR文件,并运行该文件。这使得在整个开发生命周期中,跨不同环境等将服务作为应用程序发布,版本和部署变得容易。

如果您使用的是Gradle,则可以使用运行该应用程序./gradlew bootRun。或者您可以使用构建JAR文件./gradlew build。然后你可以运行JAR文件:

java -jar build / libs / gs-rest-service-0.1.0.jar

如果您使用的是Maven,则可以使用该应用程序运行该应用程序./mvnw spring-boot:run。或者您可以使用构建JAR文件./mvnw clean package。然后你可以运行JAR文件:

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

测试服务

现在该服务已启动,请访问http:// localhost:8080 / greeting,其中显示:

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

name使用http:// localhost:8080 / greeting?name = User提供查询字符串参数。注意content属性的值如何从“Hello,World!”改变。“你好,用户!”:

{"id":2,"content":"Hello, User!"}

此更改表明该@RequestParam安排GreetingController正在按预期工作。该name参数已被赋予默认值“World”,但始终可以通过查询字符串显式覆盖。

另请注意id属性如何从更改1为2。这证明您正在GreetingController跨多个请求针对同一实例工作,并且其counter字段在每次调用时按预期递增。

结尾

恭喜!您刚刚使用Spring开发了RESTful Web服务。

java restful项目打包_构建入门Restful Web服务相关推荐

  1. java restful项目打包_听说你在接私活? 一个助你效率翻倍的项目工具!!

    最近,个人也接了点不足挂齿的小小私活.为了快速开发,开箱即用,每个项目不需要重新搭建.提升效率,就写了基本的项目架子,然后根据已建好的数据库,生成对应的增删改查的接口.生成即可使用. 一.生成的项目结 ...

  2. Java Maven项目打包成可执行jar文件

    在pom文件中添加一下内容 <build><plugins><plugin><!-- Build an executable JAR --><gr ...

  3. 用exe4j和inno setup将JAVA的项目打包为跨平台安装包

    用exe4j和inno setup将JAVA的项目打包为跨平台安装包 1.将eclipse中的相关文件导出为jar文件 2.将jar文件和jre文件用exe4j打包为可执行exe文件 3.将exe文件 ...

  4. orcad自上而下_开发自上而下的Web服务项目

    orcad自上而下 这是从Alessio Soldano编辑的Advanced JAX-WS Web Services手册中摘录的示例章节. 第一章介绍了自底向上创建Web服务端点的方法. 它允许非常 ...

  5. java restful项目打包_66-JT项目04(项目打包发布/JSON/项目业务)

    关于项目打包/发布问题说明 利用maven工具项目打包 说明: 父级JT 其中包含了2个子级项目 jt-manager 依赖于jt-common.所以项目打包是有顺序的.要先打包被依赖的项目 或者直接 ...

  6. 构建入门Restful Web服务

    创建资源类 假设你已经设置了项目和构建系统,你可以创建Web服务. 通过考虑服务交互来开始这个过程. 该服务将处理GET请求/greeting,可选地使用name查询字符串中的参数.该GET请求应该返 ...

  7. java普通项目打包成exe可执行文件

    · 提示,无论打包成jar还是exe程序,运行都需要JDK,需要给没有安装JDK的电脑安装: · maven项目有自己的打jar包方式,我们普通的java项目,可以安照步骤一打包成jar: 步骤一.先 ...

  8. jersey put 服务_项目学生:带有Jersey的Web服务服务器

    jersey put 服务 这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client , 业务层和带有Spring Data的持久性 . REST ...

  9. jersey客户端_项目学生:带有Jersey的Web服务客户端

    jersey客户端 这是Project Student的一部分. 其他职位包括带有Jersey的Webservice Client, 带有Spring Data的 业务层和持久性 . RESTful ...

最新文章

  1. 表弟高考650多,程序员不建议学计算机,亲戚:你不希望别人好
  2. 解决python中import时无法识别自己写的包和模块的方法
  3. 解决https://localhost:1158/em 页面无法打开的问题
  4. 一日千里 云计算普及势不可挡
  5. 经典mysql语句_经典MYSQL语句
  6. java多个mapreduce_一个简单的MapReduce示例(多个MapReduce任务处理)
  7. rf框架的缺点_2017热门开源自动化测试框架优缺点对比
  8. 【Java】计算一组同学一门课程的平均成绩、最高成绩和最低成绩
  9. 学习python第一天总纲
  10. ARTS打卡计划第5周-ALGORITHM
  11. php对表中的字段自选排序,Mysql应用MySQL 按指定字段自定义列表排序的实现
  12. 安装系统出现Winload.exe错误0xc000000e解决方法
  13. vue连线 插件_使用jsPlumb插件实现动态连线功能
  14. MATLAB绘图—三维网格绘图(mesh)
  15. L2行情接口怎么用最高效?
  16. Ubuntu找不到wifi适配器问题及解决办法
  17. oracle latch chain,Oracle Latch及latch矛盾
  18. 计算机教学反思杂文,教学反思或随笔
  19. 写给大学时期自己的寄语
  20. 办公用计算机安全使用常识,办公电脑使用注意事项

热门文章

  1. Springboot启动完毕后提供了立刻执行自定义程序的两个接口类
  2. fastapi 基础使用
  3. 【爬虫剑谱】一卷1章 软件篇-Mongodb的安装及配置
  4. Prepared statement needs to be re-prepare
  5. 新松机器人刻蚀机_中国最大机器人产业基地新松智慧园在沈阳启用
  6. 安装时间大于30秒_“跑步是最没用的减肥方式,必须跑30分钟以上才有用”
  7. 怎么去调需要登录的接口_遇到需要的登录的网站怎么办?学好python,用这3招轻松搞定...
  8. logback指定不同包下的日志输出到不同的文件
  9. Redlock 算法:Redis 实现分布式锁(译)
  10. 使用三重损失网络学习位置嵌入:让位置数据也能进行算术运算