第2课:扩展我们的第一个控制器

1.目标

在本课程中,通过将我们的天真的控制器实现将我们的天真控制器实现到一个新的级别,我们将继续前面开始的工作。


2.课程票据

当您从本课程开始时,您需要导入的相关模块是:M6-Expanding-Out-First-Controller-start

如果您想要查看完全实现的课程,作为参考,请随时导入:M6-Expanding-Out-First-Controller-End


2.1。这找一个()方法

现在我们的网络支持开始塑造,让我们做一些简单的cr在我们的应用。

我们的目前找一个实施在ProjectController.只需返回一些随机数据。然而,它应该在做什么使用服务层

所以让我们注射ProjectService.通过构造函数:

现在让我们使用它找一个方法。

请注意,我们需要ID这个项目,因为这就是我们正在搜索的。所以让我们确保在这里的方法中是一个参数。

接下来,我们将简单地委托为服务,提取潜在值并返回:

该参数也需要映射到A.路径组件,或通过使用的路径变量@pathRaive.注解

最后,我们将删除硬编码1“在URL中并替换为ID路径变量。现在找一个方法将是:

现在让我们运行应用程序。

我们将通过调用来打开邮递员并从客户端使用它:http:// localhost:8080 / projects / 1


2.2。误差处理问题

这里有几件事要解决。W.当然,e'll致力于提高全面的课程来改善我们的例外/错误处理,因此我们不会在此处修复这些问题。但是,让我们至少快速看看问题所在。

一个是我们在这里看到了原始的例外这显然不是理想的。

第二个问题状态码。逻辑上,我们期待回到404(未找到),因为我们正在尝试访问未找到的资源。但是,请注意我们获得了一个不正确的500个服务器错误。

最后,第三点是,而不是我们,主动检查结果,我们允许通过内部逻辑抛出异常,即,可选的。它通常更好地控制它。

我们将在单独的专用课程中处理所有问题。


2.3。写作

到目前为止,我们已经看到了读操作。我们现在做了一个写作操作,因为这将涉及Spring MVC的其他方面。

我们要做一个简单的事情保存:基本上,创建一个新的项目资源。

首先,让我们定义没有映射的基本操作:

下一个,我们将把它映射到一个http post.使用@postmappping.我们还将在此处将HTTP请求的主体映射到项目变量,使用@RequestBody:

我们现在可以切换回客户端并使用项目资源发送我们的POST请求。

笔记:在本课程中,通过更改ID的生成策略,我们还更新了实体定义

这是因为在一些课程中,我们在启动过程中会自动将实体加载到数据库中。通过春靴,这是通过添加a实现的data.sql.文件中的文件。在这些情况下,我们必须更改我们实体的身份证生成策略与自动创建的实体兼容。您可以在“资源”部分中找到有关此信息的更多信息。


3.资源

-弹簧控制器指南

-春天的网页注释

-用春靴加载初始数据的快速指南

-Hibernate中标识符概述


LS - M6 - L2.PDF