Spring Guides (一):创建一个RESTfulspring web服务


学习Spring最好的方法是什么:看官方文档,因为官方文档的信息最全,不会出现某些包过时的情况,但是官方文档很难看懂,即使看懂也不知道怎么去练习怎么办,不用怕,Spring官方都帮你想好了,
Spring Guides:https://spring.io/guides 可以说是Spring官方对新手最友好的项目教程,一个项目花费的时间只需要仅仅十几二十分钟,架子搭好了,只需要关注最重要的部分即可。
但是官方文档都是英语怎么办,不用怕,本系列文章会帮你一一捋清楚,而且会更进一步解释部分官方文档里面没有详细说明的内容。下面来一起开始吧,帮您快速进入Spring的世界!

项目说明

本项目旨在为练习人员快速熟悉并实现Restful的web服务,成果是一个API的简单接口。
项目预期效果:
restful web service
访问特定路径,可以返回一个id和打招呼的内容,以及传入的参数

项目前提条件

  • 需要至少准备15分钟
  • 最好用个IDE,强烈推荐Intellij IDEA
  • JDK 1.8以上
  • Gradle 4以上或者Maven 3.2以上

项目初始化

利用spring initializr网站
  • 网址 Spring initializr 安装包
  • 去上面网站直接点击下载,注意需要选择maven或者gradle,以及自己可以取个喜欢的名字,然后会有一个zip包,然后解压,用idea打开
利用gitte网站直接克隆下载本文的练习仓库
  • gitee仓库地址

  • 进入页面后点击克隆/下载即可,可以下载zip包,在本地解压,也可以直接克隆

项目启动

  • 这一小节假设读者的前提工作已经做好,我们进入工程根目录,启动项目:
    • gradle: ./gradlew bootRun
    • IDE, 直接运行RestServiceApplication.java文件
    • maven: ./mvnw spring-boot:run

项目运行成功标志

项目搭建

Greeting 类文件
  • src/main/java/com/example/restservice/目录下创建Greeting.java文件,用来作为返回给前端的数据结构,内容如下:建议小白自己敲一遍,加深肌肉记忆
package com.example.restservice;

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;
	}
}
  • 利用在创建Greeting的时候,有个小技巧,在把属性id和content写上后,可以右键生成构造函数以及get方法,并且可以尝试用快捷键,在我司这是必备技能哦。
Controller文件
  • src/main/java/com/example/restservice/目录下创建GreetingController.java文件,用来处理HTTP请求,内容如下:
package com.example.restservice;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.web.bind.annotation.GetMapping;
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();

	@GetMapping("/greeting")
	public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
		return new Greeting(counter.incrementAndGet(), String.format(template, name));
	}
}
  • @RestController 由两个注解组成,点进去这个注解(mac按住command + B,其他IDE以及系统可以自行百度),可以看见由俩个注解组成:
    • @Controller ,Controller其实就是个@Component(用来被自动扫描到),只是一般把处理HTTP请求这一层加上@Controller注解,用来特殊标识
    • @ResponseBody, 用来讲Controller里面方法返回的对象,通过适当的转换器,转换为特定的格式后,写入到response对象的body区(响应体)中,通常为JSON或者XML格式
  • @GetMapping("/greeting"),用来注解方法,按上述方法点开后其实就是 @RequestMapping(method = RequestMethod.GET),用来标识这个方法是个GET方法,后面括号中的"/greeting"为路径,表示需要访问 localhost:8080/greeting才能进入这个方法
  • @RequestParam(value = "name", defaultValue = "World")表示方法接收为name的参数,默认是"World", 通过请求localhost:8080/greeting?name=yourName来进行传入
  • AtomicLong
    • 可以看到我们对声明为AtomicLong的变量counter在方法里进行获取并自增的操作,为什么不用Long类型呢?
    • AtomicLong作用是对长整形进行原子操作(多线程中尤为重要), 因为不是本文的重点,大家可以自行百度进行了解

再次启动项目

  • 访问http://localhost:8080/greeting?name=EDG,可以出现下图效果。

EDG夺冠,hello EDG

结束语

  • 好啦,本文到此结束,欢迎大家阅读,请一定要自己下载代码并且自己跟着练习一遍哦,talk is cheep, show me the code!
  • 如果您的代码运行的有问题,请下载我的代码,并切换到answer分支去对比一下吧,一定要加油哦~
  • https://gitee.com/xj18624323263/spring-guide-restful-web-service.git
    gitee answer分支,restful spring web 服务
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值