Spring boot controller и сервисная функция для findById, так как find не работает - PullRequest
0 голосов
/ 04 июля 2018

Код в service.java примерно такой: я хочу использовать все основные операции CRUD. Я использую POJO, который имеет id, имя и описание, и я хочу получить одну тему, используя это .. а также почему я не могу использовать find ... ошибка выдачи ... и в findById также я не могу получить

@Autowired
TopicRepository topicRepository;
public Optional<Topic> getTopic(String id)
{ 
    //lambda expression
    //return topics.stream().filter(t->t.getId().equals(id)).findFirst().get();
    return topicRepository.findById(id);
} 

Я хотел знать, как написать свой класс контроллера? в настоящее время моя функция контроллера выглядит следующим образом

@RestController
public class TopicController {
    @Autowired 
    private TopicService topicService;
    //here a list of objects from the topic.java is returned and it
    //is converted to json automatically by spring

@RequestMapping("/topics/{id}")
    public Topic getTopic(@PathVariable String id)
    {
        return topicService.getTopic(id);
    }

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Функция класса обслуживания

public Optional<Topic> getTopic(String id)
    { 
        //lambda expression
        //return topics.stream().filter(t->t.getId().equals(id)).findFirst().get();
        return topicRepository.findById(id);
    } 

и функция контроллера

@RequestMapping("/topics/{id}")
    public Optional<Topic> getTopic(@PathVariable String id)
    {
        return topicService.getTopic(id);
    }
0 голосов
/ 04 июля 2018

Очевидно, что вы используете Optional в getTopic (String id) методе. Таким образом, вы не можете вернуть результат Optional непосредственно с вашего контроллера. С вашего контроллера вы должны вызвать метод get () . Попробуйте следующий код

@RequestMapping("/topics/{id}")
public Topic getTopic(@PathVariable String id)
{
    return topicService.getTopic(id).get();
}
0 голосов
/ 04 июля 2018

Вы не использовали какой-либо метод HTTP для вызова конечной точки отдыха getTopic.

В REST метод GET используется всякий раз, когда мы хотим получить ресурс

@RestController
@RequestMapping("/topics")
public class TopicController {
    @Autowired 
    private TopicService topicService;

    @GetMapping("/{id}") // GET HTTP method 
    public Topic getTopic(@PathVariable String id)
    {
        return topicService.getTopic(id);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...