Создание Spring REST webservice с использованием MyEclipse - PullRequest
0 голосов
/ 08 июня 2018

Я использую MyEclipse для создания приложения CRUD со службой REST, веб-приложение CRUD хорошо сгенерировано и работает нормально, но я хочу использовать также службу REST, сгенерированный RestControler выглядит так:

@Controller("NewsRestController")

public class NewsRestController {

    /**
     * DAO injected by Spring that manages News entities
     * 
     */
    @Autowired
    private NewsDAO newsDAO;

    /**
     * Service injected by Spring that provides CRUD operations for News entities
     * 
     */
    @Autowired
    private NewsService newsService;

    /**
     * Create a new News entity
     * 
     */
    @RequestMapping(value = "/News", method = RequestMethod.POST)
    @ResponseBody
    public News newNews(@RequestBody News news) {
        newsService.saveNews(news);
        return newsDAO.findNewsByPrimaryKey(news.getId());
    }

    /**
    * Show all News entities
    * 
    */
    @RequestMapping(value = "/News", method = RequestMethod.GET)
    @ResponseBody
    public List<News> listNewss() {
        return new java.util.ArrayList<News>(newsService.loadNewss());
    }

Я пытался вызвать эту службу, используя этот URL:

http://localhost:8080/JPO/NewsRestController/News

Я использую Почтальон для проверки этой службы REST, я не смог получить никакого ответа.в чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Использование порта 8080 и следующей реализации

@SpringBootApplication
@ComponentScan
@RestController
public class ApplicationStarter {

    @RequestMapping(value = "/News", method = RequestMethod.GET, produces="application/json")    
    public ResponseEntity<String> newNews() {

        return ResponseEntity.ok("{  \"message\" : \"Testing Rest services!!!\" }");
    }

    @RequestMapping
    public static void main(String[] args) {

        SpringApplication.run(ApplicationStarter.class, args);
    }
}

Вы должны использовать службу, используя:

http://localhost:8080/News

Чтобы получить ответ ниже:

{  "message" : "Testing Rest services!!!" }

Когда вы запускаете свое приложение, посмотрите на журнал, он должен указать вам путь, который вам нужно использовать, просто добавьте localhost: 8080 в начале, ниже вы можете найти мой журнал для этого примера

2018-06-07 23:00:37.030  INFO 15552 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/News],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<java.lang.String> org.tocode.hystrix.ApplicationStarter.newNews()
2018-06-07 23:00:37.034  INFO 15552 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/messages],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<java.util.List<java.lang.String>> org.tocode.hystrix.controller.HystrixController.getMessages()
2018-06-07 23:00:37.036  INFO 15552 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/uniq-messages/],methods=[GET]}" onto public org.springframework.http.ResponseEntity<java.lang.String> org.tocode.hystrix.controller.HystrixController.getUniqMessage()
2018-06-07 23:00:37.137  INFO 15552 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/messages/{messageId}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<java.lang.String> org.tocode.hystrix.controller.HystrixController.getMessageById(int)
2018-06-07 23:00:37.140  INFO 15552 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/myapp/user/{id}],methods=[GET]}" onto public org.springframework.http.ResponseEntity<java.lang.String> org.tocode.hystrix.controller.User.getId(int)
0 голосов
/ 08 июня 2018

Параметр для аннотации @Controller предназначен для определения bean-компонента с заданным именем NewsRestController, который будет использоваться в автопроводке контекста весны, а не для создания отображения URI диспетчера.Вы должны использовать аннотацию @RequestMapping, как показано ниже, для создания пути URI, который будет управляться данным контроллером.

@Controller("NewsRestController")
@RequestMapping("/NewsRestController")

Обновление: до ошибки Http 406, убедитесь, что в вашем пути к классам есть джексоновые jar-файлы для преобразования json.

...