一、前言

项目配置完之后,接着就是写接口了,那咱们就开始吧。

二、项目配置补充知识点

上篇文章写的是关于项目属性配置的一些知识,这里针对上次遗忘内容进行补充如下:

2.1、获取配置文件的值

  1. application.yml 文件中,示例内容如下:
server:
port: 8888
name: xiaoqiang
age: 11

注意:这里关于yml文件的书写,使用@Value取值时,配置文件的字段一定要顶格写,如:name: xiaoqiang因为空格会认为是某个对象的属性,这里一定要注意

  1. 利用@Value 注解取值

示例接口如下:


@RestController
public class HelloController { @Value("${name}")
private String name; @GetMapping("/say")
public String say(){
return "hi ,"+name;
}
}
  1. 访问say接口,就可以获取到值
GET http://localhost: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、使用自定义配置类

如果属性很多,我们每个属性都需要写,显得有些费事,我们可以利用自定义配置类进行获取

  1. 修改yml 文件
server:
port: 8888
name: xiaoqiang
#学生对象的属性
student:
name: alex
age: 18
  1. 创建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;
}
  1. pom文件中引入
        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
  1. 接口示例
@RestController
public class HelloController { @Resource
private Student student; @GetMapping("/sayToStudent")
public String sayToStudent(){
return "hi,"+student.getName();
} }
  1. 验证结果
GET http://localhost: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;
}
}

访问http://localhost:8888/getStudentAge/111, 结果如下

GET http://localhost: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;
} }

访问http://localhost:8888/getStudentName?name=111, 结果如下:

GET http://localhost: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;
} }

访问http://localhost:8888/getStudentInfo?name=111&age=11, 结果如下:

GET http://localhost: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中接口的写法介绍完成。

寻找写代码感觉(三)之使用 Spring Boot 编写接口的更多相关文章

  1. 寻找写代码感觉(一)之使用 Spring Boot 快速搭建项目

    写在前面 现在已经是八月份了,我已经荒废了半年居多,不得不说谈恋爱确实是个麻烦的事,谈好了皆大欢喜,分手了就是萎靡不振,需要很长一段时间才能缓过来. 人还是要有梦想的,至于实现只不过是一个契机,但凡不 ...

  2. 寻找写代码感觉(二)之 Spring Boot 项目属性配置

    一.前言 写代码就和恋爱一样,有反馈就要趁热打铁,搞完了项目搭建,接下来就来搞搞项目配置. 二.IDEA设置 1.编码配置 这里所说的就是代码的编码格式,你可以不设置,但是可能要面临的是,很多未知的麻 ...

  3. 寻找写代码感觉(五)之Mybatis官方代码生成器的使用

    一.Mybatis Generator生成器 见名知意,官方给出的代码生成器.好处就是不用自己写实体类.接口.xml文件了,应对简单增删改查是可以的.复杂的还是需要自己手写sql的. 二.Mybati ...

  4. 寻找写代码感觉(八)之SpringBoot过滤器的使用

    一.什么是过滤器? 过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的, ...

  5. 寻找写代码感觉(十六)之 集成Validation做参数校验

    写在前面 今天是大年初五了... 不知不觉,又要上班了,美好的假期只剩一天了,有点不舍呢! 也不知道为什么,总感觉像在做梦一样,像没睡醒一样,并不是因为眼睛小,更多应该是自寻烦恼,想得多罢了. 参数校 ...

  6. .NET CORE与Spring Boot编写控制台程序应有的优雅姿势

    本文分别说明.NET CORE与Spring Boot 编写控制台程序应有的“正确”方法,以便.NET程序员.JAVA程序员可以相互学习与加深了解,注意本文只介绍用法,不会刻意强调哪种语言或哪种框架写 ...

  7. 着重基础之—Spring Boot 编写自己的过滤器

    Spring Boot 编写自己的"过滤器" 又好久没有写博客进行总结了,说实话,就是 "懒",懒得总结,懒得动.之所以写这篇博客,是因为最近对接公司SSO服务的时候,需要自定义拦 ...

  8. spring boot rest 接口集成 spring security(2) - JWT配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  9. spring boot rest 接口集成 spring security(1) - 最简配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

随机推荐

  1. centos7 U盘安装及Raid划分的完整流程

    目录 一.Centos7的新特性: 二.安装方法与准备工作(U盘镜像) 1. 安装方法介绍 2. Centos iso 常用镜像下载地址: 3. UltraISO制作U盘系统镜像 3.1 准备工作: ...

  2. Linux磁盘配额与LVM

    一.LVM概述  逻辑卷管理 Logical Volume Manager二.LVM机制的基本概念三.LVM的管理命令  ① 主要命令  ② ==LVM逻辑卷操作流程==  ③ 举例四.磁盘配额概述  ...

  3. Linux必备命令 - 常用命令集

    默认进入系统,我们会看到这样的字符: [root@localhost ~]#,其中#代表当前是root用户登录,如果是$表示当前为普通用户.cd 命令 cd  /home  :解析:进入/home目录 ...

  4. nmcli device and nmcli connection

    NetworkManager是RHEL 7之后推出的有效管理网络的服务 NetworkManager通过工具nmcli来管理网卡 网卡属于物理硬件,NetworkManager属于软件层面,如何通过软 ...

  5. ssh服务两句话

    ssh服务采用"非对称密钥系统":主要通过两把不一样的公钥和密钥来进行加密与解密的过程 公钥(Public Key):提供给远程主机进行数据加密 私钥(Private Key):远 ...

  6. PYTHON PIP 快速安装

    清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https: ...

  7. C语言:九宫格

    #include <stdio.h> /* 如下排列表示 A00 A01 A02 A10 A11 A12 A20 A21 A22 */ int main() { unsigned char ...

  8. HDFS学习总结之API交互

    第一种.shell交互 官方文档:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0/hadoop-project-dist/ha ...

  9. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-热部署项目到tomcat中,但是数据库配置文件错误,中途停止部署,导致执行shutdow.sh报错异常: Could not contact localhost:8005. Tomcat may not be running error while shutting down】

    1,经过千辛万苦的尝试和百度,终于一个博客:http://stackmirror.caup.cn/page/skxugjqj0ldc关于catalina.sh文件的执行引起了我的注意: 2,我执行ca ...

  10. 详述 IntelliJ IDEA 远程调试 Tomcat 的方法

    首先,配置remote: 如上图所示,点击Edit Configurations,进入如下界面: 如上图所示,我们进入了Run/Debug Configurations界面,然后点击左上角的+,选择R ...