RestTemplate
RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。
UserModelRestApplication
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.annotation.MapperScans;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@MapperScans(value = {@MapperScan(basePackages = "com.baizhi.dao")})
public class UserModelRestApplication {
public static void main(String[] args) {
SpringApplication.run(UserModelRestApplication.class, args);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Controler发布与测试
form表单参数接收FormUserController
import com.baizhi.controller.FormUserController;
import com.baizhi.entities.User;
import com.baizhi.service.impl.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping(value = "/formUserManager")
public class FormUserController{
private static final Logger LOGGER = LoggerFactory.getLogger(FormUserController.class);
@Autowired
private UserService userService;
@PostMapping(value = "/registerUser")
public User registerUser(User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile = File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
System.out.println(tmpFile.getName());
tmpFile.delete();
}
userService.saveUser(user);
return user;
}
@PostMapping(value = "/userLogin")
public User userLogin(User user) {
return userService.queryUserByNameAndPassword(user);
}
@PostMapping(value = "/addUser")
public User addUser(User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile =
File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
System.out.println(tmpFile.getName());
tmpFile.delete();
}
userService.saveUser(user);
return user;
}
@PutMapping(value = "/updateUser")
public void updateUser(User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile =
File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
System.out.println(tmpFile.getName());
tmpFile.delete();
}
//更新用户信息
userService.updateUser(user);
}
@DeleteMapping(value = "/deleteUserByIds")
public void delteUserByIds(@RequestParam(value = "ids") Integer[] ids) {
userService.deleteByUserIds(ids);
}
@GetMapping(value = "/queryUserByPage")
public List<User> queryUserByPage(@RequestParam(value = "page", defaultValue = "1") Integer pageNow,
@RequestParam(value = "rows", defaultValue = "10") Integer pageSize,
@RequestParam(value = "column", required = false) String column,
@RequestParam(value = "value", required = false) String value) {
HashMap<String, Object> results = new HashMap<>();
results.put("total", userService.queryUserCount(column, value));
results.put("rows", userService.queryUserByPage(pageNow, pageSize, column, value));
return userService.queryUserByPage(pageNow, pageSize, column, value);
}
@GetMapping(value = "/queryUserCount")
public Integer queryUserCount(@RequestParam(value = "column", required = false) String column,
@RequestParam(value = "value", required = false) String value) {
return userService.queryUserCount(column, value);
}
@GetMapping(value = "/queryUserById")
public User queryUserById(@RequestParam(value = "id") Integer id) {
//从数据库中查询
return userService.queryUserById(id);
}
}
RestTemplate测试FormUserControllerTests
import com.baizhi.UserModelRestApplication;
import com.baizhi.entities.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.FileSystemResource;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertNotEquals;
@SpringBootTest(classes = {UserModelRestApplication.class})
@RunWith(SpringRunner.class)
public class FormUserControllerTests {
@Autowired
private RestTemplate restTemplate;
private String urlPrefix = "http://127.0.0.1:8888/formUserManager";
/*
@PostMapping(value = "/registerUser")
public User registerUser(User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile)
*/
@Test
public void testRegisterUser() {
String url = urlPrefix + "/registerUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("name", "李李⼩小四");
formData.add("password", "123456");
formData.add("sex", "true");
formData.add("birthDay", "2018-01-26");
formData.add("photo", "user.png");
formData.add("email", "1152926811@qq.com");
//模拟⽂件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
User user = restTemplate.postForObject(url, formData, User.class);
assertNotEquals("⽤用户ID", user.getId());
}
/*
@PostMapping(value = "/userLogin")
public User userLogin(User user)
*/
@Test
public void testUserLogin() {
String url = urlPrefix + "/userLogin";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
formData.add("name", "李李⼩小四");
formData.add("password", "123456");
User user = restTemplate.postForObject(url, formData, User.class);
assertNotEquals("⽤用户ID", user.getId());
}
/*
@PostMapping(value = "/addUser")
public User addUser(User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile) throws IOException
*/
@Test
public void testAddUser() {
String url = urlPrefix + "/addUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
formData.add("name", "赵晓丽");
formData.add("password", "123456");
formData.add("sex", "true");
formData.add("birthDay", "2018-01-26");
formData.add("photo", "user.png");
formData.add("email", "1152926811@qq.com");
//模拟文件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
User user = restTemplate.postForObject(url, formData, User.class);
}
/*
@PutMapping(value = "/updateUser")
public void updateUser(User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile) throws IOException
*/
@Test
public void testUpdateUser() {
String url = urlPrefix + "/updateUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
formData.add("id", "6");
formData.add("name", "赵晓丽");
formData.add("password", "123456");
formData.add("sex", "true");
formData.add("birthDay", "2018-01-27");
formData.add("photo", "user1.png");
formData.add("email", "1152926811@qq.com");
//模拟文件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
restTemplate.put(url, formData);
}
/*
@DeleteMapping(value = "/deleteUserByIds")
public void delteUserByIds(@RequestParam(value = "ids") Integer[] ids)
*/
@Test
public void testDeleteUser() {
String url = urlPrefix + "/deleteUserByIds?ids={id}";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("id", "4,5,6");
restTemplate.delete(url, parameters);
}
/*
@GetMapping(value = "/queryUserByPage")
public List<User> queryUserByPage(@RequestParam(value = "page",defaultValue = "1")
Integer pageNow,
@RequestParam(value = "rows",defaultValue =
"10") Integer pageSize,
@RequestParam(value = "column",required = false)
String column,
@RequestParam(value = "value",required = false)
String value)
*/
@Test
public void testQueryUserByPage() {
String url = urlPrefix + "/queryUserByPage?page={page}&rows={rows}&column={column}&value = {value} ";
Map<String, Object> params = new HashMap<String, Object>();
params.put("page", 1);
params.put("rows", 10);
params.put("column", "name");
params.put("value", "⼩小");
User[] users = restTemplate.getForObject(url, User[].class, params);
}
/*
@GetMapping(value = "/queryUserCount")
public Integer queryUserCount(@RequestParam(value = "column",required = false)
String column,
@RequestParam(value = "value",required = false)
String value)
*/
@Test
public void testQueryUserCount() {
String url = urlPrefix + "/queryUserCount?column={column}&value={value}";
//模拟表单数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("column", "name");
parameters.put("value", "晓");
Integer count = restTemplate.getForObject(url, Integer.class, parameters);
}
/*
@GetMapping(value = "/queryUserById")
public User queryUserById(@RequestParam(value = "id") Integer id)
*/
@Test
public void testQueryUserById() {
String url = urlPrefix + "/queryUserById?id={id}";
//模拟表单数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("id", "2");
User user = restTemplate.getForObject(url, User.class, parameters);
}
}
json格式数据接收restUserManager
import com.baizhi.entities.User;
import com.baizhi.service.impl.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping(value = "/restUserManager")
public class RestUserController {
private static final Logger LOGGER = LoggerFactory.getLogger(RestUserController.class);
@Autowired
private UserService userService;
@PostMapping(value = "/registerUser")
public User registerUser(@RequestPart(value = "user") User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile = null;
try {
tmpFile = File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(tmpFile.getName());
tmpFile.delete();
}
userService.saveUser(user);
return user;
}
@PostMapping(value = "/userLogin")
public User userLogin(@RequestBody User user) {
return userService.queryUserByNameAndPassword(user);
}
@PostMapping(value = "/addUser")
public User addUser(@RequestPart(value = "user") User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile =
File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
System.out.println(tmpFile.getName());
tmpFile.delete();
}
userService.saveUser(user);
return user;
}
@PutMapping(value = "/updateUser")
public void updateUser(@RequestPart(value = "user") User user, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws IOException {
if (multipartFile != null) {
String fileName = multipartFile.getOriginalFilename();
String suffix = fileName.substring(fileName.lastIndexOf("."));
File tmpFile =
File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);
System.out.println(tmpFile.getName());
tmpFile.delete();
}
//更新⽤用户信息
userService.updateUser(user);
}
@DeleteMapping(value = "/deleteUserByIds")
public void delteUserByIds(@RequestParam(value = "ids") Integer[] ids) {
userService.deleteByUserIds(ids);
}
@GetMapping(value = "/queryUserById")
public User queryUserById(@RequestParam(value = "id") Integer id) {
//从数据库中查询
return userService.queryUserById(id);
}
@GetMapping(value = "/queryUserByPage")
public List<User> queryUserByPage(@RequestParam(value = "page", defaultValue = "1") Integer pageNow,
@RequestParam(value = "rows", defaultValue = "10") Integer pageSize,
@RequestParam(value = "column", required = false) String column,
@RequestParam(value = "value", required = false) String value) {
HashMap<String, Object> results = new HashMap<>();
results.put("total", userService.queryUserCount(column, value));
results.put("rows", userService.queryUserByPage(pageNow, pageSize, column, value));
return userService.queryUserByPage(pageNow, pageSize, column, value);
}
@GetMapping(value = "/queryUserCount")
public Integer queryUserCount(@RequestParam(value = "column", required = false) String column,
@RequestParam(value = "value", required = false) String value) {
return userService.queryUserCount(column, value);
}
}
RestTemplate测试RestUserControllerTests
import com.baizhi.UserModelRestApplication;
import com.baizhi.entities.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.core.io.FileSystemResource;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertNotEquals;
@SpringBootTest(classes = {UserModelRestApplication.class})
@RunWith(SpringRunner.class)
public class RestUserControllerTests {
@Autowired
private RestTemplate restTemplate;
private String urlPrefix = "http://127.0.0.1:8888/restUserManager";
/*
@PostMapping(value = "/registerUser")
public User registerUser(@RequestPart(value = "user") User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile) throws IOException {
*/
@Test
public void testRegisterUser() {
String url = urlPrefix + "/registerUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
User user = new User("张晓磊磊", true, "123456", new
Date(), "aa.png", "1152926811@qq.com");
formData.add("user", user);
//模拟文件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
User registerUser = restTemplate.postForObject(url, formData, User.class);
assertNotEquals("⽤用户ID", registerUser.getId());
}
/*
@PostMapping(value = "/userLogin")
public User userLogin(@RequestBody User user)
*/
@Test
public void testUserLogin() {
String url = urlPrefix + "/userLogin";
//模拟表单数据
User user = new User();
user.setName("张晓磊磊");
user.setPassword("123456");
User loginUser = restTemplate.postForObject(url, user, User.class);
assertNotEquals("⽤用户ID", loginUser.getId());
}
/*
@PostMapping(value = "/addUser")
public User addUser(@RequestPart(value = "user") User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile) throws IOException
*/
@Test
public void testAddUser() {
String url = urlPrefix + "/addUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
User user = new User("温晓琪", true, "123456", new
Date(), "aa.png", "1152926811@qq.com");
formData.add("user", user);
//模拟⽂件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
User dbUser = restTemplate.postForObject(url, formData, User.class);
}
/*
@PutMapping(value = "/updateUser")
public void updateUser(@RequestPart(value = "user") User user,
@RequestParam(value = "multipartFile",required = false)
MultipartFile multipartFile) throws IOException {
*/
@Test
public void testUpdateUser() {
String url = urlPrefix + "/updateUser";
//模拟表单数据
MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>
();
User user = new User("温晓琪", false, "123456", new
Date(), "aa.png", "1152926811@qq.com");
user.setId(9);
formData.add("user", user);
//模拟⽂文件上传
FileSystemResource fileSystemResource = new
FileSystemResource("/Users/admin/Desktop/head.png");
formData.add("multipartFile", fileSystemResource);
restTemplate.put(url, formData);
}
/*
@DeleteMapping(value = "/deleteUserByIds")
public void delteUserByIds(@RequestParam(value = "ids") Integer[] ids)
*/
@Test
public void testDeleteUser() {
String url = urlPrefix + "/deleteUserByIds?ids={id}";
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("id", "4,5,6");
restTemplate.delete(url, parameters);
}
/*
@GetMapping(value = "/queryUserByPage")
public List<User> queryUserByPage(@RequestParam(value = "page",defaultValue = "1")
Integer pageNow,
@RequestParam(value = "rows",defaultValue =
"10") Integer pageSize,
@RequestParam(value = "column",required = false)
String column,
@RequestParam(value = "value",required = false)
String value)
*/
@Test
public void testQueryUserByPage() {
String url = urlPrefix + "/queryUserByPage?page={page}&rows={rows}&column= {column}&value={value}";
Map<String, Object> params = new HashMap<String, Object>();
params.put("page", 1);
params.put("rows", 10);
params.put("column", "name");
params.put("value", "⼩小");
User[] users = restTemplate.getForObject(url, User[].class, params);
}
/*
@GetMapping(value = "/queryUserCount")
public Integer queryUserCount(@RequestParam(value = "column",required = false)
String column,
@RequestParam(value = "value",required = false)
String value)
*/
@Test
public void testQueryUserCount() {
String url = urlPrefix + "/queryUserCount?column={column}&value={value}";
//模拟表单数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("column", "name");
parameters.put("value", "晓");
Integer count = restTemplate.getForObject(url, Integer.class, parameters);
}
/*
@GetMapping(value = "/queryUserById")
public User queryUserById(@RequestParam(value = "id") Integer id)
*/
@Test
public void testQueryUserById() {
String url = urlPrefix + "/queryUserById?id={id}";
//模拟表单数据
Map<String, Object> parameters = new HashMap<>();
parameters.put("id", "2");
User user = restTemplate.getForObject(url, User.class, parameters);
}
}