繁体   English   中英

Web Api控制器路由

[英]Web Api controller routing

我有一个ConfigurationController,其静态Register方法中指定了默认路由

 config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

此端点的POST方法创建一个新的配置,其字符串ID可通过url访问 - 'api / configuration / newid'。

每个配置都可以有一个与之关联的“任务”。 我现在想通过'TaskController'公开任务的CRUD操作。 因此,如果我想为'newid'创建一个新任务,我可以通过在'api / configuration / newid / task'进行POST来实现

我不知道如何在我的Web API项目中为此指定路由。

  • 路由应该是什么样的?
  • 这也是正确的方法,或者我应该通过显式端点'api / task'来公开任务,尽管任务不能孤立存在。 它们始终绑定到配置。

WebAPI设置为RESTful; 也就是说,您使用HTTP Verbs与控制器通信而不是命名操作(即newconfig )。

所以,要走你已经去的路线,而不是点击api/configuration/newconfig/task ,你可能只是点击api/configuration并发送带有HTTP POST动词的请求。 然后,您发送的消息可能包括您正在创建的消息,例如:

{
  type: 'Task',
  data: {
  }
}

但是,最好将Tasks分成他们自己的控制器,即TasksController ,它们有自己的GET, PUT, POST, DELETE动词,它们只对Tasks 然后,您将通过调用api/Tasks/创建新Tasks ,并将消息正文作为您所需的任务。

路由应该是什么样的?

routeTemplate: "api/configuration/{id}/task"

这也是正确的方法,或者我应该通过显式端点'api / task'来公开任务,尽管任务不能孤立存在。 它们始终绑定到配置。

当你声明Each configuration can have a 'Task' associated with it.时,我认为你已经回答了这个Each configuration can have a 'Task' associated with it.

如果您保持控制器“轻量级”并确保业务逻辑保存在其他位置,则添加新路由/控制器/操作变得微不足道。

如果您愿意,可以将其保留在ConfigurationTasks控制器中,同时仍具有ConfigurationTask控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM