P3 API的对外合约












建议的做法






创建Controller

博主习惯于用复数的形式,CompaniesController


首先让他继承与ControllerBase这个类。


这里其实继承Controller也行。我们F12进去。

controller也是继承于ControllerBase的。所以Controller的东西肯定是要比ControllerBase的东西多

这里我们还是用ControllerBase。因为我们创建的项目是WebApi。只需要api相关的知识就可以了。Controller里面添加了对视图的支持。因此它更适用于Web MVC的程序。如果你的项目同时支持Web MVC和 webAPI的话 那么你就继承自Controller即可。


ControllerBase里面提供了很多用于处理Http请求的方法


加上注解APIController,这个属性用于Controller级别。但是它不是强制的。它使得webAPI的开发体验更好。

也可以这么去创建控制器

 

 

这样创建的控制器默认继承了ControllerBase,同时也加上了[ApiController]的注解。

ApiController




注入CompanyRepository

如果注入的是一个null的话 ,这里我们就抛出异常

IActionResult返回结果,相当于定义了一些合约。这些合约可以代表Action返回结果。因为我们通常用api返回的结果都是json格式的。

返回json格式,就需要序列化。

运行测试,看到报错了


因为这里我们使用了ApiController。那么就要求使用属性路由。但是默认


而我们这里配置的是统一的路由模板,而没有使用属性路由。

属性路由下一节再讲。

我本机没有报错 

我本机没有上面作者的报错,是因为在创建Controller的时候自动加上了。[Route("api/[controller]")]。如果这里我注释掉的话,也会报错。

结束

 

posted @ 2020-03-21 21:10  高山-景行  阅读(268)  评论(0编辑  收藏  举报