项目配置完之后,接着就是写接口了,那咱们就开始吧。
二、项目配置补充知识点上篇文章写的是关于项目属性配置的一些知识,这里针对上次遗忘内容进行补充如下:
2.1、获取配置文件的值在application.yml 文件中,示例内容如下:
server: port: 8888 name: xiaoqiang age: 11注意:这里关于yml文件的书写,使用@Value取值时,配置文件的字段一定要顶格写,如:name: xiaoqiang,因为空格会认为是某个对象的属性,这里一定要注意。
利用@Value 注解取值
示例接口如下:
@RestController public class HelloController { @Value("${name}") private String name; @GetMapping("/say") public String say(){ return "hi ,"+name; } }访问say接口,就可以获取到值
GET :8888/say HTTP/1.1 200 Content-Type: application/json Content-Length: 15 Date: Thu, 26 Aug 2021 07:33:02 GMT Keep-Alive: timeout=60 Connection: keep-alive hi ,xiaoqiang 2.2、使用自定义配置类如果属性很多,我们每个属性都需要写,显得有些费事,我们可以利用自定义配置类进行获取
修改yml 文件
server: port: 8888 name: xiaoqiang #学生对象的属性 student: name: alex age: 18创建Student.java
示例代码如下:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * @author longrong.lang * @version 1.0 * @description * @date 2021/8/17 21:16 */ @Data @Component @ConfigurationProperties(prefix = "student") public class Student { private String name; private int age; }在pom文件中引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>接口示例
@RestController public class HelloController { @Resource private Student student; @GetMapping("/sayToStudent") public String sayToStudent(){ return "hi,"+student.getName(); } }验证结果
GET :8888/sayToStudent HTTP/1.1 200 Content-Type: application/json Content-Length: 7 Date: Thu, 26 Aug 2021 07:49:24 GMT Keep-Alive: timeout=60 Connection: keep-alive hi,alex Response code: 200; Time: 165ms; Content length: 7 bytes 三、神秘的controller可能很多同学会好奇,接口都在哪写? controller里写呀。
3.1、关于controller用于定义接口,是请求的入口
3.2、常用注解的使用@RestController注解用于声明返回文本数据,一般返回JSON
@Controller注解用于声明返回界面
@RestController = @Controller + ResponseBody
3.3、接口的常用写法及参数使用 使用不同路径访问同一个方法示例代码如下:
/** * 使用不同路径访问同一个方法 * @return */ @RequestMapping(method= RequestMethod.GET,value = {"/hello","/hi"}) //@GetMapping({"/hello","/hi"}) public String sayHello(){ return "hello,Spring Boot!"; }说明:
@GetMapping("/hello") 等价于 @RequestMapping(value="/hello", method=RequestMethod.GET) @PathVariable:的使用示例代码如下:
@RestController public class HelloController { /** * @PathVariable 使用示例 * @param age * @return */ @GetMapping("/getStudentAge/{age}") public int getAge(@PathVariable("age") Integer age){ return age; } }访问:8888/getStudentAge/111, 结果如下
GET :8888/getStudentAge/111 HTTP/1.1 200 Content-Type: application/json Transfer-Encoding: chunked Date: Thu, 26 Aug 2021 08:07:18 GMT Keep-Alive: timeout=60 Connection: keep-alive 111 Response code: 200; Time: 193ms; Content length: 3 bytes @RequestParam的使用正常请求,示例代码如下:
@RestController public class HelloController { /** * @RequestParam使用示例 * @param name * @return */ @GetMapping("/getStudentName") public String getStudentName(@RequestParam String name){ return "name :"+name; } }访问:8888/getStudentName?name=111, 结果如下:
GET :8888/getStudentName?name=111 HTTP/1.1 200 Content-Type: application/json Content-Length: 9 Date: Thu, 26 Aug 2021 08:14:13 GMT Keep-Alive: timeout=60 Connection: keep-alive name :111 Response code: 200; Time: 172ms; Content length: 9 bytes设置参数非必须的,并且设置上默认值
@RestController public class HelloController { /** * @RequestParam 设置参数非必须的,并且设置上默认值 * @param name * @return */ @GetMapping("/getStudentInfo") public String getStudentInfo(@RequestParam(value = "name",required = true,defaultValue = "rongrong") String name,@RequestParam(value = "age",required = true,defaultValue = "19")int age){ return "name :"+name+" \t age: "+age; } }访问:8888/getStudentInfo?name=111&age=11, 结果如下:
GET :8888/getStudentInfo?name=111&age=11 HTTP/1.1 200 Content-Type: application/json Content-Length: 19 Date: Thu, 26 Aug 2021 08:29:12 GMT Keep-Alive: timeout=60 Connection: keep-alive name :111 age: 11 Response code: 200; Time: 48ms; Content length: 19 bytes到此,Controller中接口的写法介绍完成。