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]")]。如果这里我注释掉的话,也会报错。
结束