当前位置:   article > 正文

Spring Boot构建RESTful API与单元测试(1)_springboot restcontroller 单元测试

springboot restcontroller 单元测试
  • @Controller:修饰class,用来创建处理http请求的对象

  • @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式

  • @RequestMapping:配置url映射

下面我们尝试使用Spring MVC来实现一组对User对象操作的RESTful API,配合注释详细说明在Spring MVC中如何映射HTTP请求、如何传参、如何编写单元测试。

RESTful API具体设计如下:

| 请求类型 | URL | 功能说明 |

| — | — | — |

| GET | /users | 查询用户列表 |

| POST | /users | 创建一个用户 |

| GET | /users/id | 根据id查询一个用户 |

| PUT | /users/id | 根据id更新一个用户 |

| DELETE | /users/id | 根据id删除一个用户 |

User实体定义:

public class User {

private Long id;

private String name;

private Integer age;

// 省略setter和getter

}

实现对User对象的操作接口

@RestController

@RequestMapping(value=“/users”) // 通过这里配置使下面的映射都在/users下

public class UserController {

// 创建线程安全的Map

static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());

@RequestMapping(value=“/”, method=RequestMethod.GET)

public List getUserList() {

// 处理"/users/"的GET请求,用来获取用户列表

// 还可以通过@RequestParam从页面中传递参数来进行查询条件或者翻页信息的传递

List r = new ArrayList(users.values());

return r;

}

@RequestMapping(value=“/”, method=RequestMethod.POST)

public String postUser(@ModelAttribute User user) {

// 处理"/users/"的POST请求,用来创建User

// 除了@ModelAttribute绑定参数之外,还可以通过@RequestParam从页面中传递参数

users.put(user.getId(), user);

return “success”;

}

@RequestMapping(value=“/{id}”, method=RequestMethod.GET)

public User getUser(@PathVariable Long id) {

// 处理"/users/{id}"的GET请求,用来获取url中id值的User信息

// url中的id可通过@PathVariable绑定到函数的参数中

return users.get(id);

}

@RequestMapping(value=“/{id}”, method=RequestMethod.PUT)

public String putUser(@PathVariable Long id, @ModelAttribute User user) {

// 处理"/users/{id}"的PUT请求,用来更新User信息

User u = users.get(id);

u.setName(user.getName());

u.setAge(user.getAge());

users.put(id, u);

return “success”;

}

@RequestMapping(value=“/{id}”, method=RequestMethod.DELETE)

public String deleteUser(@PathVariable Long id) {

// 处理"/users/{id}"的DELETE请求,用来删除User

users.remove(id);

return “success”;

}

}

下面针对该Controller编写测试用例验证正确性,具体如下。当然也可以通过浏览器插件等进行请求提交验证。

@RunWith(SpringJUnit4ClassRunner.class)

@SpringApplicationConfiguration(classes = MockServletContext.class)

@WebAppConfiguration

public class ApplicationTests {

private MockMvc mvc;

@Before

public void setUp() throws Exception {

mvc = MockMvcBuilders.standaloneSetup(new UserController()).build();

}

@Test

public void testUserController() throws Exception {

// 测试UserController

RequestBuilder request = null;

// 1、get查一下user列表,应该为空
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记

我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

image.png

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
中…(img-pHr4VrI3-1713391250221)]

[外链图片转存中…(img-0N3NHkVJ-1713391250221)]

[外链图片转存中…(img-dD3BSdFa-1713391250221)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/871467
推荐阅读
相关标签
  

闽ICP备14008679号