我该如何解决这个问题?我无法从Postman或浏览器访问我的控制器类方法?

huangapple 未分类评论59阅读模式
英文:

How can I resolve this issue, I am unable to access my controller class methods from Postman or Browser?

问题

以下是翻译好的内容:

我正在运行一个简单的Spring Boot应用程序,在控制台上它成功运行。但是当我尝试使用Postman时,它会返回以下错误消息。

  1. {
  2. "timestamp": "2020-07-26T04:22:15.626+00:00",
  3. "status": 404,
  4. "error": "Not Found",
  5. "message": "",
  6. "path": "/loginRegistration/user/"
  7. }

我的项目结构如下图所示...

(图片已省略)

我的主类是

  1. package org.example;
  2. import org.example.controller.User;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.context.annotation.ComponentScan;
  6. @SpringBootApplication
  7. public class App {
  8. public static void main(String[] args) {
  9. SpringApplication.run(App.class, args);
  10. System.out.println("Welcome");
  11. }
  12. }

我的控制器是...

  1. package org.example.controller;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import org.example.entity.Registration;
  4. import org.example.model.UserDto;
  5. import org.example.service.UserService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestMethod;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import java.util.List;
  12. @RestController
  13. @RequestMapping("/user")
  14. public class User {
  15. @Autowired
  16. UserService userService;
  17. @RequestMapping(value = "/registration", method = RequestMethod.POST)
  18. public String registerUser(@Validated UserDto userdto) throws JsonProcessingException {
  19. userService.registerUser(userdto);
  20. return "success";
  21. }
  22. @RequestMapping(value = "/getUserList", method = RequestMethod.GET)
  23. public List<Registration> getUserList() {
  24. List<Registration> list = userService.getUserList();
  25. return list;
  26. }
  27. @RequestMapping(value = "/")
  28. public String test() {
  29. return "testing";
  30. }
  31. }

请指导我需要做哪些更改以在Postman上运行。

英文:

I am running a simple Spring boot application, In console its running successfully. But when I am trying by postman it gives this error message.

  1. {
  2. &quot;timestamp&quot;: &quot;2020-07-26T04:22:15.626+00:00&quot;,
  3. &quot;status&quot;: 404,
  4. &quot;error&quot;: &quot;Not Found&quot;,
  5. &quot;message&quot;: &quot;&quot;,
  6. &quot;path&quot;: &quot;/loginRegistration/user/&quot;

}

My project structure is...
我该如何解决这个问题?我无法从Postman或浏览器访问我的控制器类方法?

My Main class is

  1. import org.example.controller.User;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ComponentScan;
  5. @SpringBootApplication
  6. public class App {
  7. public static void main(String[] args) {
  8. SpringApplication.run(App.class, args);
  9. System.out.println(&quot;Welcome&quot;);
  10. }
  11. }

My Controller is....

  1. import com.fasterxml.jackson.core.JsonProcessingException;
  2. import org.example.entity.Registration;
  3. import org.example.model.UserDto;
  4. import org.example.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.validation.annotation.Validated;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestMethod;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import java.util.List;
  11. @RestController
  12. @RequestMapping(&quot;/user&quot;)
  13. public class User {
  14. @Autowired
  15. UserService userService;
  16. @RequestMapping(value = &quot;/registration&quot;, method = RequestMethod.POST)
  17. public String registerUser(@Validated UserDto userdto) throws JsonProcessingException {
  18. userService.registerUser(userdto);
  19. return &quot;success&quot;;
  20. }
  21. @RequestMapping(value = &quot;/getUserList&quot;, method = RequestMethod.GET)
  22. public List&lt;Registration&gt; getUserList() {
  23. List&lt;Registration&gt; list = userService.getUserList();
  24. return list;
  25. }
  26. @RequestMapping(value = &quot;/&quot;)
  27. public String test() {
  28. return &quot;testing&quot;;
  29. }
  30. }

Please guide me what changes need to be done to run on postman.

答案1

得分: 2

> spring应用程序名称不作为上下文路径使用。 您将需要在您的application.properties文件中定义以下属性,以便使用'loginRegistration'作为上下文路径。

  1. server.servlet.context-path=/loginRegistration

现在您可以将其用作/loginRegistration/user/

如果有帮助,请告诉我。谢谢

英文:

> spring application name does not use as context path. You will have to
> define below property in your application.properties file to use
> 'loginRegistration' as your context path.

  1. server.servlet.context-path=/loginRegistration

And now you can use it as /loginRegistration/user/

Let me know if that helps. Thanks

答案2

得分: 0

你必须确保在给定的URL之前提供战争名称...并且查看包应该在你的主类下...如果不是,你必须在主类中使用componentscan添加。

英文:

You have to make sure, you providing war name along with your given URL... And see packages should be under you main class... if not u have to add in main class using componentscan

答案3

得分: 0

另一种选择是根据@Jimmy的描述,在你的User类中定义@RequestMapping,如下所示:

  1. @RestController
  2. @RequestMapping("/loginRegistration/user/")
  3. public class User {
英文:

Another alternative to what @Jimmy described is to define @RequestMapping in your User class as -

  1. @RestController
  2. @RequestMapping(&quot;/loginRegistration/user/&quot;)
  3. public class User {

huangapple
  • 本文由 发表于 2020年7月26日 13:13:21
  • 转载请务必保留本文链接:https://java.coder-hub.com/63096335.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定