我已经创建了一个名为User
的类,并且我想使用POST和GET测试@RequestMapping
。我创建了2种方法,一种用于一个对象,另一种用于一个对象列表。但是,当我在仅允许POST的返回一个对象方法上测试GET时,它将返回值,并且值是对象列表。那为什么会导致呢?
@RestController
public class WebController {
@PostMapping(name="/getUser123")
public User getUser(){
User user=new User();
user.setName("mint");
user.setAge(19);
user.setPass("123456");
return user;
}
@RequestMapping(name="/changeWholeName")
public List<User> changeWholeName(){
List<User> users =new ArrayList<User>();
User user1=new User();
user1.setName("mint1");
user1.setAge(19);
user1.setPass("123456");
users.add(user1);
User user2=new User();
user2.setName("mint3");
user2.setAge(192);
user2.setPass("1234516");
users.add(user2);
return users;
}
}
使用GET测试第一种方法GET localhost:8080/getUser
,然后进入第二种方法,返回值列表。为什么以及如何解决这个问题?非常感谢〜
答案 0 :(得分:1)
name
是Assign a name to this mapping.
您应该将name
更改为value
@PostMapping(value="/getUser123")
public User getUser(){
User user=new User();
user.setName("mint");
user.setAge(19);
user.setPass("123456");
return user;
}
@RequestMapping(value="/changeWholeName")
public List<User> changeWholeName(){
List<User> users =new ArrayList<User>();
User user1=new User();
user1.setName("mint1");
user1.setAge(19);
user1.setPass("123456");
users.add(user1);
User user2=new User();
user2.setName("mint3");
user2.setAge(192);
user2.setPass("1234516");
users.add(user2);
return users;
}
详细信息:
您可以阅读此页面以获取有关name
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.html#fromMappingName-java.lang.String-的更多详细信息。
我假设您的@Controller
类正在使用默认方法localhost:8080/getUser
将请求提交给GET
。因此,它将调用changeWholeName()
,因为该方法处理GET
请求。因为您使用名称而不是值,所以Spring这样理解代码:
@RestController
@RequestMapping("/getUser")
public UserController {
@RequestMapping(value="", name="/changeWholeName") //Handle HTTP GET to /getUser
public List<User> changeWholeName(){
}
}
答案 1 :(得分:0)
我不太了解您要做什么,请更加准确。
但是首先您的POST方法getUser
返回一个User,因此应该用相同的@GetMapping("/getUser123")
或@RequestMapping(value = "/getUser123", method = RequestMethod.GET)
进行注释。您看到应该定义使用@RequestMapping
时要使用的HTTP方法。
您应该根据方法的用途来命名您的方法,否则会造成混乱。
您可以了解有关Spring的控制器注释here的更多信息。
答案 2 :(得分:0)
这两个方法都返回一些数据,然后应该使用GET请求访问这两个数据。
访问此方法
my_string = list(input('Enter text: '))
my_string = ['!' if char == 'i' else char
for char in my_string]
print(''.join(my_string))
访问此方法
@GetMapping(value="/getUser123")
public User getUser(){
User user=new User();
user.setName("mint");
user.setAge(19);
user.setPass("123456");
return user;
}