service.java中的代码是这样的,我想使用所有基本的CRUD操作。我正在使用具有ID,名称和描述的POJO,并且我想使用它来获得一个主题。 以及为什么我不能使用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);
}
答案 0 :(得分:0)
您没有使用任何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);
}
答案 1 :(得分:0)
服务类功能
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);
}
答案 2 :(得分:0)
很明显,您在 getTopic(String id)方法中使用了Optional。因此,您不能直接从控制器返回Optional的结果。从您的控制器,您必须调用 get()方法。尝试以下代码
@RequestMapping("/topics/{id}")
public Topic getTopic(@PathVariable String id)
{
return topicService.getTopic(id).get();
}