java spring MVC之RESTful快速开发

我这里有个一springboot项目
在这里插入图片描述
我在启动类同目录下创建了一个目录 目录名叫 controller
里面有一个UserController
diam结构是这样的

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@Controller
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @RequestMapping(value = "/user", method = RequestMethod.POST)
    @ResponseBody
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @RequestMapping(value = "/user", method = RequestMethod.PUT)
    @ResponseBody
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @RequestMapping(value = "/user", method = RequestMethod.DELETE)
    @ResponseBody
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

这是一个基础的REST风格风格开发 但其实 我们可以很大程度的简化

这里 我先启动项目
在这里插入图片描述
然后用Postman测试 这些都是可以正常访问 和 调用返回的
在这里插入图片描述
确认无误之后 我们开一个一个解决一下他们的简化快捷开发

首先 来做第一个简化 大家会发现 他们路径都是user 那么 简化最需要简的就是 重复部分 我们先改成这样

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@Controller
@RequestMapping("/user")
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @RequestMapping(value = "/{id}",method = RequestMethod.GET)
    @ResponseBody
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @RequestMapping( method = RequestMethod.POST)
    @ResponseBody
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @RequestMapping(method = RequestMethod.PUT)
    @ResponseBody
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @RequestMapping(method = RequestMethod.DELETE)
    @ResponseBody
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

我们再次尝试访问 会确认一切正常
在这里插入图片描述
这里 触发 get 因为后面的id是路径参数 需要保留 其他 如果你想直接用user这个名字 就不需要加这个RequestMapping的value来声明路径了
如果你想叫 user/add 就可以 直接放

@RequestMapping(value = "/add",method = RequestMethod.POST)

然后 你会发现 全部都用了 ResponseBody
那么是不是重复 那我们干掉
写在类上面 每个方法就不需要单独加了 这个就表示 这个类下所有的方法都使用ResponseBody
在这里插入图片描述

然后是头上的

@Controller
@ResponseBody

其实很多类都会用 那么 我们就可以这样
将这两个注解干掉直接换成

@RestController

在这里插入图片描述
我们点进去看一下
在这里插入图片描述
都在这里面了

然后 我们发现 每一个方法都有一个 RequestMethod.请求方式 这个也可以写简单一点
我们直接改成这样

package com.example.threshold.controller;

import com.example.threshold.user;
import org.springframework.web.bind.annotation.*;

//声明Controller控制器
@RestController
@RequestMapping("/user")
public class UserController {

    // 设置一个 GET接口  子路径get  接受一个id参数  id要跟在路径后面
    @GetMapping("/{id}")
    public String getId(@PathVariable Integer id) {
        return "您要获取的用户id为"+id;
    }

    //设置一个 POST请求  子路径叫  add 接受一个name参数   需要传递的方式是一个 表单传参或者路径问号后传参方式带的参数
    @PostMapping
    public String addUser(@RequestParam String name) {
        return "你要添加的用户名称为"+name;
    }

    //设置一个 PUT请求 子路径叫  edit   接受一个user类对象参数  要求json传参
    @PutMapping
    public user editUser(@RequestBody user user) {
        //把接到的json传回去
        return user;
    }

    // 设置一个DELETE请求  子路径为delete   接受一个参数id 和 一个type参数  接受方式为  表单或者 路径问号后携带参数
    @DeleteMapping
    public String deleteUser(@RequestParam Integer id,Integer type) {
        return "你要删除的用户id为"+id+"操作类型为"+type;
    }
}

DeleteMapping声明delete 请求
PutMapping声明put 请求
PostMapping声明post 请求
GetMapping声明get 请求
如果 有路径 或者路径参数这几 在后面接 (“/后面的内容”)
就好了

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring MVC的ModelAndView是一个组合对象,它将Model(数据)和View(视图)合并在一起。ModelAndView包含一个Model实例(一个Map对象),其中包含需要在视图中呈现的数据,以及一个视图名称或视图对象。Spring MVC将ModelAndView返回给DispatcherServlet,然后DispatcherServlet使用视图解析器(ViewResolver)将视图名称解析为实际的视图对象,最终将数据和视图传递给客户端。 使用Spring MVC构建Restful风格的API,首先需要定义API的URI和HTTP方法。在Spring MVC中,可以使用@RequestMapping注解来定义API的URI和HTTP方法。例如: ```java @RestController @RequestMapping("/api") public class MyRestController { @GetMapping("/user/{id}") public User getUserById(@PathVariable("id") Long id) { User user = userService.getUserById(id); return user; } @PostMapping("/user") public User createUser(@RequestBody User user) { userService.createUser(user); return user; } @PutMapping("/user/{id}") public User updateUser(@PathVariable("id") Long id, @RequestBody User user) { userService.updateUser(id, user); return user; } @DeleteMapping("/user/{id}") public void deleteUser(@PathVariable("id") Long id) { userService.deleteUser(id); } } ``` 上面的代码定义了一个名为MyRestController的RestController,它包含四个API方法:getUserById、createUser、updateUser和deleteUser。这些方法分别使用@GetMapping、@PostMapping、@PutMapping和@DeleteMapping注解来指定API的HTTP方法。其中,@PathVariable注解用于获取URI中的参数,@RequestBody注解用于获取请求体中的数据。 在API方法中,可以直接返回数据对象,Spring MVC会自动将其转换为JSON格式的响应。如果需要自定义响应格式或响应状态码,可以使用ResponseEntity类。例如: ```java @GetMapping("/user/{id}") public ResponseEntity<User> getUserById(@PathVariable("id") Long id) { User user = userService.getUserById(id); if (user != null) { return ResponseEntity.ok(user); } else { return ResponseEntity.notFound().build(); } } ``` 上面的代码定义了一个返回类型为ResponseEntity<User>的API方法,它可以自定义响应状态码和响应体。如果找到了用户,则返回200状态码和用户对象;如果找不到用户,则返回404状态码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值