所在的位置: mysql >> mysql介绍 >> NETCore20与Angular4

NETCore20与Angular4

刘军连是北京哪个医院皮肤科医生 https://wapjbk.39.net/yiyuanfengcai/ys_bjzkbdfyy/793/
我们继续我们的系列教程,通过检查如何使用GET请求从WebAPI提取数据并使用Postman进行测试。在之前的文章中,我们创建了一个用于从数据库收集数据的存储库模式。现在,是时候将该存储库用于业务逻辑。您将保留存储库类中的所有数据库逻辑。控制器将负责处理请求,模型验证以及向应用程序的前端部分返回响应。通过这样做,您的控制器不会被代码淹没,从而使代码更易于阅读和维护。如果您想查看本系列的所有基本说明和完整导航,请按照以下链接进行操作:本教程的简介页面。源代码可以在.NETCore,Angular4和MySQL下载。第5部分-源代码WebAPI中的控制器和路由要创建控制器,请右键单击主项目中的Controllers文件夹并添加新项目。然后从菜单中选择WebAPI控制器类并将其命名为OwnerController.cs。因为我们要从头开始,请删除控制器类中的所有操作,如下所示:usingMicrosoft.AspNetCore.Mvc;namespaceAccountOwnerServer.Controllers{[Route(api/[controller])]publicclassOwnerController:Controller{}}每个WebAPI控制器类都从控制器抽象类继承,该类为派生类提供所有必需的行为。此外,在控制器类的上方,您可以看到这部分代码:[Route(api/[controller])]这代表了路由,我们将会谈谈WebAPI内部的路由。WebAPI路由将传入的HTTP请求路由到WebAPI控制器内的特定操作方法。有两种类型的路由:基于约定的路由属性路由基于约定的路由因此被命名,因为它为URL路径建立了一个约定。第一部分是控制器名称映射,第二部分是动作方法的映射,第三部分是可选参数。您可以在Configure方法的Startup类中配置此类路由。属性路由使用属性将路由直接映射到控制器内的操作方法。通常,我们将基础路线放置在控制器类的上方,您可以在我们的WebAPI控制器类中注意到。同样,对于特定的操作方法,我们在它们上方创建它们的路线。GetAllOwnersHTTPGET请求那么我们开始吧。首先,将基本路由从[Route(“api/[controller]”)]更改为[Route(“api/owner”)]。即使第一个路由可以正常工作,但第二个例子我们可以更具体地了解这个路由应该指向的路径OwnerController。现在是时候创建第一个操作方法来从数据库返回所有所有者。在IOwnerRepository界面中,为该方法创建一个定义GetAllOwners:publicinterfaceIOwnerRepository{IEnumerableOwnerGetAllOwners();}然后在OwnerRepository类中实现该接口:namespaceRepository{publicclassOwnerRepository:RepositoryBaseOwner,IOwnerRepository{publicOwnerRepository(RepositoryContextrepositoryContext):base(repositoryContext){}publicIEnumerableOwnerGetAllOwners(){returnFindAll().OrderBy(ow=ow.Name);}}}最后,您需要通过使用GetAllOwnersWebAPI操作中的方法返回所有者。WebAPI控制器内的操作方法的目的不仅仅是返回结果。这是主要目的,但不是唯一的目的。您还需要注意WebAPI响应的状态代码。此外,您必须用HTTP属性来修饰您的操作,这些属性会将HTTP请求的类型标记为该操作。你可以阅读更多关于HTTP并找到了一些HTTP请求的例子在第1部分我们的HTTP系列。OwnerController使用以下代码修改:usingContracts;usingMicrosoft.AspNetCore.Mvc;usingSystem;namespaceAccountOwnerServer.Controllers{[Route(api/owner)]publicclassOwnerController:Controller{privateILoggerManager_logger;privateIRepositoryWrapper_repository;publicOwnerController(ILoggerManagerlogger,IRepositoryWrapperrepository){_logger=logger;_repository=repository;}[HttpGet]publicIActionResultGetAllOwners(){try{varowners=_repository.Owner.GetAllOwners();_logger.LogInfo(Returnedallownersfromdatabase.);returnOk(owners);}catch(Exceptionex){_logger.LogError(SomethingwentwronginsideGetAllOwnersaction:{ex.Message});returnStatusCode(,Internalservererror);}}}}让我稍微解释一下这段代码。首先,您在构造函数中注入记录器和存储库服务。然后通过GetAllOwners使用该[HttpGet]属性装饰该动作,将该动作映射到GET请求。最后,您使用两个注入参数来记录消息并从存储库类中获取数据。该IActionResult接口支持使用多种方法,它们不仅返回结果,还返回状态码。在这种情况下,OK方法返回所有所有者以及代表OK的状态代码。如果发生异常,我们将返回状态码为的内部服务器错误。您可以通过阅读HTTP系列-参考来了解关于状态代码的更多信息因为动作上方没有路由属性,动作的路由GetAllOwners将会是api/owner(


转载请注明:http://www.aierlanlan.com/rzfs/9109.html