1.新建一个普通Maven工程



完成后目录结构如下:

2.在pom文件中加入对Spring-Boot的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.longqiu</groupId>
<artifactId>RestfullAPI</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.新建Controller来接收客户端的请求,在建之前我们先建包,如果想让包上下关系分明需要做下设置

把这个勾去掉即可,建包如下

在controler下新建UserController :
@RestController
@RequestMapping(value="/user")
public class UserController {
@RequestMapping(method = RequestMethod.GET)
public String user(){
return "hello world!";
}
@RequestMapping(value="/get/{username}",method = RequestMethod.GET)
public String get(@PathVariable String username){
return "welcome," + username;
}
@RequestMapping(value="/login",method = RequestMethod.GET)
public String login(@RequestParam String username,@RequestParam String pwd){
return "user:" + username + ",password:" + pwd;
}
}
4.在model下新建启动Restful服务端的启动类MappRunApplication
package com.study.model;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MappRunApplication {
public static void main(String[] args) {
SpringApplication.run(MappRunApplication.class, args);
}
}
使用Spring的MockMvc框架构建单元测试 选中UserController 创建test

package com.study.model.controler;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
这几个包要注意:如果不这样引入包,get、content、status会报错,也可以直接用父类名.什么来调用那样更清晰明了
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserControllerTest {
private MockMvc mvc;
@Before
public void setup(){
this.mvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
}
@Test
public void contextLoads() throws Exception{
RequestBuilder request = get("/user");
mvc.perform(request).andExpect(status().isOk()).andExpect(content().string("hello world!"));
request = get("/user/get/qxl");
mvc.perform(request).andExpect(status().isOk()).andExpect(content().string("welcome,qxl"));
request = get("/user/login").param("username","qxl").param("pwd","123456");
mvc.perform(request).andExpect(status().isOk()).andExpect(content().string("user:qxl,password:123456"));
}
}
5.运行MappRunApplication的时候
@PathVariable 应这样输入参数
http://localhost:8080/user/get/xiao 有可能访问不到
原因:可能是版本问题,映射不成功
应该要这样写:
@RequestMapping(value="/get/{username}",method = RequestMethod.GET)
public String get(@PathVariable("username") String username){
return "welcome," + username;
}
@RequestParam的参数拼写
http://localhost:8080/user/login?username=xi&pwd=123
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
@RequestParam是传递参数的.
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。
本文详细介绍如何使用Spring Boot创建RESTful API,包括Maven工程搭建、依赖配置、Controller创建及单元测试,深入解析@PathVariable和@RequestParam参数处理。
1090

被折叠的 条评论
为什么被折叠?



