英文:
Is it possible to verify empty input from the user in spring boot?
问题
我正在编写一个Spring Boot应用程序,我在验证用户的空输入时遇到了一些问题。
有没有一种方法可以验证用户的空输入?
例如:
@PostMapping("/new_post/{id}")
public int addNewPost(@PathVariable("id") Integer id, @RequestBody Post post) {
return postService.addNewPost(id, post);
}`
在这里,我只想在数据库中存在用户时才添加新的帖子,但是当我发送这个帖子请求时,我收到了常规的404错误消息,并且我无法提供自己的异常,尽管在我的代码中我验证了id是否为空。
http://localhost:8080/new_post/
有什么想法我该怎么办?
谢谢
英文:
I'm writing a spring boot application and I'm having some troubles in verifying empty input from the user.
Is there a way to validate an empty input from the user?
For example:
@PostMapping("/new_post/{id}")
public int addNewPost(@PathVariable("id") Integer id, @RequestBody Post post) {
return postService.addNewPost(id, post);
}`
Here I want to add a new post only if the user exists in the database but when I send this post request I am getting the regular 404 error message and I am not able to provide my own exception although in my code I validate if the id equals to null.
http://localhost:8080/new_post/
Any idea what can I do?
Thanks
答案1
得分: 1
我认为你需要这样做:
@PostMapping(value = {"/new_post/", "/new_post/{id}"})
public int addNewPost(@PathVariable(value = "id", required = false) Integer id, @RequestBody Post post) {
这样做可以处理 ID 为空时的 URL。
英文:
I think you need to do it like this:
@PostMapping(value = {"/new_post/", "/new_post/{id}"})
public int addNewPost(@PathVariable(value = "id", required = false) Integer id, @RequestBody Post post) {
This way you are also handling the URL when ID is null
答案2
得分: 1
你可以像这样做:
@PostMapping(value = {"/new_post/{id}", "/new_post"})
public int addNewPost(@PathVariable(required = false, name="id") Integer id, @RequestBody Post post) {
return postService.addNewPost(id, post);
}
但处理这种情况的理想方式是使用@RequestParam
。@RequestParam
正好是为此目的而设计的。
英文:
You can do something like this
@PostMapping(value = {"/new_post/{id}", "/new_post"})
public int addNewPost(@PathVariable(required = false, name="id") Integer id, @RequestBody Post post) {
return postService.addNewPost(id, post);
}
But the ideal way to handle this is using @RequestParam
. @RequestParam
is meant exactly for this purpose.
答案3
得分: 0
***我认为这是对另外两个更好的答案:***
@PostMapping("/new_post/{id}")
public int addNewPost(@PathVariable("id") Integer id, @RequestBody Post post)
{
if(!ObjectUtils.isEmpty(post))
{
return postService.addNewPost(id, post);
}
else
return null; // 您可以抛出异常或任何其他响应
}
**id :** 不需要检查 'id',因为没有id,请求的方法不会被调用。
英文:
I Think This is a Better Answer for Two Others :
@PostMapping("/new_post/{id}")
public int addNewPost(@PathVariable("id") Integer id, @RequestBody Post post)
{
if(!ObjectUtils.isEmpty(post))
{
return postService.addNewPost(id, post);
}
else
return null; // You can throws an Exception or any others response
}
id : Not required to check 'id', because with out id the requested method is not call.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论