我正在构建和测试一个简单的Spring Boot API REST教程。我面临着一个我正在努力理解的问题。当调用POST方法来创建并持久化一个新实体时,我得到了一个HTTP 406(不可接受)。
问题是实体被持久化了,但对客户端的响应不是预期的(在本例中,HTTP 201是用URI创建的)。
Tutorial和TutorialDto类具有完全相同的属性。定义如下:
public class TutorialDto {
private long id;
private String title;
private String description;
private boolean published;
...
}
以下是我在@RestController类中的POST方法:
@PostMapping("/tutorial")
public ResponseEntity.BodyBuilder createTutorial(@RequestBody final TutorialDto tutorialDto) {
final TutorialDto createdTutorial = tutorialService.add(tutorialDto);
return ResponseEntity.created(URI.create(String.format("tutorial/%d", createdTutorial.getId())));
}
下面是创建实体的@Service方法:
@Transactional
public TutorialDto add(final TutorialDto tutorialDto) {
final Tutorial createdTutorial = tutorialRepository.save(modelmapper.map(tutorialDto, Tutorial.class));
return Optional.of(modelmapper.map(createdTutorial, TutorialDto.class))
.orElseThrow(() -> new TutorialCreationException(
String.format("Tutorial: %s could not be created", tutorialDto.getTitle()))
);
}
这是请求正文:
{
"title": "tutorial",
"description": "This is the first created tutorial"
}
这是回应机构:
{
"timestamp": "2022-04-16T00:40:36.626+00:00",
"status": 406,
"error": "Not Acceptable",
"path": "/api/v1/tutorial"
}
在返回“ResponseEntity.created”之后,我在控制器方法的末尾得到HTTP 406响应。
提前谢谢。
看来你用错了ResponseEntity。健美运动员。下面是一个例子
因此,控制器代码应该如下所示:
@PostMapping("/tutorial")
public ResponseEntity createTutorial(@RequestBody final TutorialDto tutorialDto) {
final TutorialDto createdTutorial = tutorialService.add(tutorialDto);
return ResponseEntity.created(URI.create(String.format("tutorial/%d", createdTutorial.getId()))).body(createdTutorial);
}
我试图创建一个Spring Rest控制器,基于这个例子我创建了一个这样的控制器。 DeveloperRestController.java web.xml dispatcher-servlet.xml 但是它显示404页没有找到,似乎是spring试图加载一个模板... 结果: 错误404/we b-INF/JSP/developer/list . JSP 我该怎么办?
我正在使用blueprint开发一个camel restlet项目,以部署在Fuse上。它是一个非常简单的HTTP帖子,带有简单的文本正文。我将交换模式设置为。 另外,如果处理是一个长时间运行的进程,会发生什么?我希望在数据发布后立即终止,而不是等到上下文中完成处理。 我的蓝图是这样的:
我有一个Restful Web Application,我想测试以下类: 我的测试课程是: } 然而,当我运行测试时,我得到了:java。lang.AssertionError:预期状态: 这是我的pom。xml: 我在这个网站上回顾了几乎所有与此问题相关的问题,并尝试了任何对象Mapper和对象Wrapper的组合但仍然无法通过测试。如果有人能帮助我,我将非常感激。 以下是完整的错误:
我有一个项目,其中我创建了一个BankAccount超级类和一个SavingsAccount子类。一切都很好,但我在返回我特别想要的字符串时遇到了麻烦。 示例:(裁剪) 驱动程序类将对BankAccount使用toString方法,并打印以下内容: (这对于这个超类来说是完美的) 但是,下面是SavingsAccount子类 调用SavingsAccount的toString方法时,它会打印: S
问题内容: 我昨天在JavaFX中构建了一个小应用程序。我想在Controller类中获取应用程序的场景。每次尝试在控制器类中获取场景时,都会出错。我可以在Controller类的Button上设置OnKeyPressed方法,效果很好。但是,只有在选择Button后,它才能正常工作。我只能在Main类方法replaceSceneContent中获得场景。我已经读过这个问题,但是我在initial
我昨天在JavaFX中构建了一个小应用程序。我想在Controller类中获取应用程序的场景。每次我试图在控制器类中获取场景时,我都会出错。我可以在Controller类中的Button上设置OnKeyPested-method,工作正常。但是只有当按钮被选中时,它才工作正常...我可以只在Main类方法replace eSceneContent中获取场景。我已经读过这个问题了,但是我在初始化方法