SpringBoot2.1.5(39)--- 开发restful 风格Api

SpringBoot 实现RestFul 相关注解的介绍

如果说你会使用SpringMVC 那么下面的内容你阅读将会很轻松,我这里通过搭建一个用户管理 接口API 让你快速学会如何创建restful 风格的API 。我们没有对接数据库相关数据在代码中都是写死的。示例程序SpringBoot版本是2.1.0.RELEASE 对应SpringMVC版本是 5.1.2RELEASE 。

创建 restful 风格的API 的 需要使用到的注解

1 在我们接口Controller上声明 @RestController() 表明该类 RestFul 风格的Controller。

在对应的方法上声明如下标签:

@GetMapping() 用于生命在 Get方式访问的接口 该方式主要用于数据查询。

@PostMapping() 用于声明在 Post方式访问的接口 该方式主要用于数据新增。

@PutMapping() 用于声明在 Put方式访问的接口 该方式主要用于全部更新。

@PatchMapping() 用于声明在 Patch方式访问的接口 该方式主要用于局部更新。

@DeleteMapping() 用于声明在 Delete 方式访问的接口 该方式主要用于数据删除。

上面这些注解在Spirng4.0 中也同样适用,但是在SpringMVC 3.0 中我们需要通过@Controller 和 @ResponseBody 来达到 @RestController()的效果。

对于@GetMapping() 和 @PostMapping() 等是通过 @RequestMapping()的method 属性来实现的例如: @RequestMapping(value = "",method = RequestMethod.POST)。

put 方式接受不到参数问题解决

在进行开发是遇到啦问题就是把修改时参数接受不到然后百度查询需要配置HttpPutFormContentFilter才可以。但是springBoot没有xml所以我们需要通过注解的方式来配置HttpPutFormContentFilter过滤器。

/**
 * 解决restFul put 参数无法接收的问题
 */
@Component
public class PutFilter extends HttpPutFormContentFilter {
}

参考文献:HTTPS://www.aliyun.com/jiaocheng/852091.html

示例程序代码介绍

用户Model的代码

下面是我们用户的Model类 用户类里面包含用户名称name和用户年龄年龄成员变量。

package com.zyzx.model;

import com.zyzx.custominterface.AddrWithEnum.AddrEnum;
import com.zyzx.custominterface.AddrWithEnum;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;




public class User {
	@NotEmpty(message="请输入您的名称!")
	private String name;
	@Max(value = 100, message = "年龄必须在20-100之间!")
	@Min(value= 20 ,message= "年龄必须在20-100之间!" )
    private Integer age;

	@AddrWithEnum(addr = AddrEnum.BEIJING)
	private String addr;
 
    public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
}

用户Controller类声明RestController

package com.zyzx.controller;

import com.zyzx.model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * SpringBoot restful api
 */
@RestController()
@RequestMapping("/bootUser")
public class SBootRestController {
	Logger log = LoggerFactory.getLogger(SmvcRestController.class);
    /**
     * 根据用户id 查询用户
     * @return
     */
    @GetMapping("/{id}")
    public User get(@PathVariable(name = "id") Long id){
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        log.info("springboot查询用户成功:"+"id:{}",id);
        return user;
    }
    /**
     * 添加用户
     */
    @PostMapping()
    public User add(@Valid User user,BindingResult bindingResult){
    	if(bindingResult.hasErrors()) {
    		String defaultMessage = bindingResult.getFieldError().getDefaultMessage();
    		System.out.println(defaultMessage);
    		return null;
        }
        log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
		return user;
    }
    @PutMapping()
    public void updatePut(User user){
        log.info("springboot Put 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }
    /**
     * 局部更新
     */
    @PatchMapping("/{name}")
    public void updatePatch(@PathVariable("name") String name){
        log.info("springboot Patch 修改用户成功:"+"name:{}",name);
    }
    /**
     * 删除用户
     */
    @DeleteMapping("/{id}")
    public void delete(@PathVariable("id") Long id){
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        log.info("springboot 删除用户成功:"+"id:{}",id);
    }
}
package com.zyzx.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zyzx.model.User;
@RequestMapping("/mvcUser")
@ResponseBody
@Controller
public class SmvcRestController {
	
	Logger log = LoggerFactory.getLogger(SmvcRestController.class);
    /**
     * 根据用户id 查询用户
     * @return
     */
    @RequestMapping(value = "/{id}",method = RequestMethod.GET )
    public User get(@PathVariable(name = "id") Long id){
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        log.info("查询用户成功:"+"id:{}",id);
        return user;
    }
    /**
     * 添加用户
     */
    @RequestMapping(value = "",method = RequestMethod.POST)
    public void add(User user){
        log.info("添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }
 
    /**
     * 全部替换修改
     * @param user
     */
    @RequestMapping(value = "",method = RequestMethod.PUT)
    public void updatePUT(User user){
        log.info("修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
    }
 
    /**
     * 局部修改用户名称
     * @param name
     */
    @RequestMapping(value = "",method = RequestMethod.PATCH)
    public void updatePATCH(String name){
        log.info("修改用户成功:"+"name:{}",name);
    }
 
    /**
     * 删除用户
     */
    @RequestMapping(value = "{id}",method = RequestMethod.DELETE)
    public void delete(@PathVariable("id") Long id){
        User user = new User();
        user.setName("zhangsan");
        user.setAge(18);
        log.info("删除用户成功:"+"id:{}",id);
    }
}

查询用户接口

@GetMapping("/{id}")
public User get(@PathVariable(name = "id") Long id){
	User user = new User();
	user.setName("zhangsan");
	user.setAge(18);
	log.info("springboot查询用户成功:"+"id:{}",id);
	return user;
}

添加用户接口

@PostMapping()
    public void add(User user){

​	log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
​    }

全部修改用户接口

@PutMapping() public void updatePut(User user){

​ log.info("springboot Put 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge()); ​ }

局部修改用户接口

@PatchMapping("/{name}")
public void updatePatch(@PathVariable("name") String name){
	log.info("springboot Patch 修改用户成功:"+"name:{}",name);
}

删除用户的接口

@DeleteMapping("/{id}")
public void delete(@PathVariable("id") Long id){
	User user = new User();
	user.setName("zhangsan");
	user.setAge(18);
	log.info("springboot 删除用户成功:"+"id:{}",id);
}

application.properties文件

server.port=8090
server.servlet.context-path=/sbe

用户管理API测试

查询测试

 

添加测试

2019-06-18 22:40:22.398  INFO 8552 --- [nio-8090-exec-3] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2019-06-18 22:40:22.407  INFO 8552 --- [nio-8090-exec-3] o.s.web.servlet.DispatcherServlet        : Completed initialization in 9 ms
2019-06-18 22:40:22.449  INFO 8552 --- [nio-8090-exec-3] com.zyzx.controller.SmvcRestController   : 查询用户成功:id:1

 

全局修改测试

 

 

2019-06-18 22:43:36.429  INFO 8552 --- [nio-8090-exec-6] com.zyzx.controller.SmvcRestController   : springboot Put 修改用户成功:name:lisi,age:17

局部修改测试

 

 

2019-06-18 22:46:17.724  INFO 8552 --- [nio-8090-exec-3] com.zyzx.controller.SmvcRestController   : springboot Patch 修改用户成功:name:lisia

删除测试

 

2019-06-18 22:47:40.549  INFO 8552 --- [nio-8090-exec-4] com.zyzx.controller.SmvcRestController   : springboot 删除用户成功:id:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值