springboot 控制器

springboot 控制器

文章目录

1.Controller和RestController

Controller:数据和页面

RestController:数据

所以我们的controller一般在springmvc中使用,返回页面,但是现在的项目基本上都是前后端分离项目,可以多使用RestController

也就是说,RequestMapping是一个标准的写法,可以替换GetMapping等,如以下代码

cpp 复制代码
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    //标准写法
    @RequestMapping(value = "/bz",method = RequestMethod.GET)
    public String bz(){
        return "bz!!";
    }
    //任何一种访问方式都行
    @RequestMapping("/any")
    public String any(){
        return "any!!";
    }
    //get访问方式
    @GetMapping("/hello")
    public String  hello(){
        return "hello啊书法大赛 world!";
    }
}

也就是说,以下两个方式是等同的,post、delete、update等类推


2.参数传递

@RequestParam:把传送参数绑定到方法上

1.当传送参数名称和方法一样时,可以省略
java 复制代码
 @GetMapping("/hello")
    public String  hello(String nikename){
        return nikename+"你好";
    }
反之不可以
java 复制代码
  @GetMapping("/hello")
    public String  hello(@RequestParam(value = "nikename") String name){
        return name+"你好";
    }
post方法测试参数传递
java 复制代码
//Post测试参数传递
    @RequestMapping(value = "/test",method = RequestMethod.POST)
    public String test(String name,String password){
        return name + password;
    }    

这个时候我们不能单独的在浏览器测试了,需要借助postman或者是其他软件模拟浏览器发送请求,因为在输入栏我们无法传递post请求。

我这里借助idea自带的http文件测试接口

java 复制代码
###
POST http://localhost:8080/test
Content-Type: application/x-www-form-urlencoded

name=John+Doe&password=30

<> 2024-09-23T090528.200.txt

对应的post接口

当我们使用这样的方式去传递类数据时,也是直接按照类里的各个属性,传送参数要和类里的各个属性名相同,这样代码会自动帮我们匹配,例:

java 复制代码
 //Post测试参数(使用json发送多个参数,或者类参数)
    @RequestMapping(value = "/test1",method = RequestMethod.POST)
    public User test1(User user){
        System.out.println(user.getName());
        return user;
    }

对应的测试接口写法

java 复制代码
POST http://localhost:8080/test1
Content-Type: application/x-www-form-urlencoded

id=1&name=king&phone=1841891561

@PathVaraible

@PathVariable 是 Spring MVC 中用于处理 RESTful Web 服务时的一个注解,它允许你从 URL 中提取变量值,并将这些值绑定到控制器处理方法的参数上。这个注解通常与 @RequestMapping 或其派生注解(如 @GetMapping、@PostMapping 等)一起使用,来指定哪些请求路径和方法应该被映射。
java 复制代码
@RestController  
@RequestMapping("/users")  
public class UserController {  
  
    @GetMapping("/{userId}")  
    public User getUserById(@PathVariable("userId") Long userId) {  
        // 这里根据userId获取用户信息,并返回User对象  
        // 示例代码,实际情况需要替换为真实的用户数据获取逻辑  
        return new User(userId, "John Doe");  
    }  
}

@RequestBody

当我们需要接受一个json的数据时,可以使用这样一个注解

例:

接口写法:
java 复制代码
  //Post测试参数(使用json发送多个参数,或者类参数)
    @RequestMapping(value = "/test2",method = RequestMethod.POST)
    public User test2(@RequestBody User user){
        System.out.println(user);
        return user;
    }
}
测试写法:
java 复制代码
POST http://localhost:8080/test2
Content-Type:application/json

{
  "id": 1,
  "name": "king",
  "phone": 18474314
}
相关推荐
晴子呀几秒前
Java基础知识扫盲
java·开发语言
不惑_19 分钟前
缓存技巧 · Spring Cache && Caffeine 高性能缓存库
java·spring·缓存
六月的雨__1 小时前
自驾游拼团系统小程序的设计
java·sql·学习·小程序
Tinalee-电商API接口呀1 小时前
【经验分享】电商api接口——各类商品数据一键获取
java·大数据·开发语言·python·json·产品运营·html5
蒙娜丽宁1 小时前
深入理解华为仓颉语言的数值类型
开发语言·后端·golang·仓颉
2401_857638031 小时前
Spring Boot框架在高校心理辅导中的实践
java·spring boot·后端
BUG指挥官1 小时前
7种限流算法打开新方式
java·redis·算法·spring cloud
潘多编程1 小时前
Spring Boot和AOP将API输入输出数据存入数据库
数据库·spring boot·后端
DeepCoder_Mx1 小时前
Spring Boot 学习之路 -- 基础认知
spring boot·后端
想进大厂的小王2 小时前
Mybatis基础操作
spring boot·spring·intellij-idea·mybatis