场景:访问localhost:8080/user?name=Bear&password=power 显示Bear get power
通过本节学习,我们可以用如下几种方式来接受参数
- 直接获取
- 转成类对象
- 获取路径参数
直接获取
@RestContrller
public class UserController
{
@PostMapping(“/user”)
@ResponseBody
public String login(String name, String password)
{
User user = null;
if(!StringUtil.isEmpty(name) && !StringUtil.isEmpty(password))
{
user = getUser(name, password); //Service 负责处理具体的业务
}
if(user != null)
{
return user.message;
}
return "login failed";
}
public class StringUtil
{
public static bool isEmpty(String str)
{
return str != null && !"".equal(str);
}
}
转成类对象
public class User
{
private long id;
private String name;
private String password;
//get and set
}
@RestController
public class UserController
{
@PostMapping("/user")
@ResponseBody
public String login(User user)
{
//逻辑同上
}
}
处理json格式的请求
@RestController
public class UserController
{
@PostMapping("/user")
@ResponseBody
public String login(@RequestBody User user)
//通过RequestBody注解参数,告诉编译器Http消息的内容是JSON格式,需要反序列化成我们需要个类型
{
//逻辑同上
}
}
获取路径参数
请求的url格式如下:
localhost:8080/user/{id}
@RestController
public class UserController
{
@GetMapping(path = "/user.json")
@ResponseBody
public User getUser(@PathVariable Long id)//由于java代码编译成class的时候,参数名会被保存下来,所以可以直接使用Long id
{
User user = getUser(id);
if(user != null)
{
return user;
}
user = new User();
user.setName("Bear");
return user; // 应该返回错误码及错误消息
}
}
@PathVariable 注解也可以自己指定参数名
@RestController
public class UserController
{
@GetMapping(path = "/user.json")
@ResonseBody
public User getUser(@PathVariable("id") Long userId)
{
//逻辑同上
}
}