0

我有静态注册方法网页API控制器路由

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

这个端点的POST方法创建一个字符串ID是通过URL访问一个新的配置中指定的默认路由一个ConfigurationController - “ API /配置/ newid的”。

每个配置都可以有一个与其关联的“任务”。我现在想通过'TaskController'公开任务的CRUD操作。所以,如果我想为'newid'创建一个新任务,我可以通过在'api/configuration/newid/task'处发布。

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

  • 路由应该是什么样的?
  • 此外,这是正确的方法,或者我应该通过显式端点“API /任务”公开任务,尽管任务不能孤立存在。它们总是绑定到配置上。

回答

0

WebAPI设置为RESTful;也就是说,您使用HTTP动词与您的控制器进行对话,而不是使用命名操作(即newconfig)。

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

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

然而,这将是一个更好的主意,Tasks分成自己的控制器,即TasksController,用自己的GET, PUT, POST, DELETE动词是仅对Tasks采取行动。然后,您将通过呼叫api/Tasks/创建新的Tasks,消息正文是您所需的任务。

+0

我不特别喜欢单独的'任务'端点的想法,因为任务没有独立的存在。 'newconfig'是指在POST'api/configuration'后新生成的id。 – alwayslearning 2015-03-03 14:01:02

0

路由应该是什么样的?

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

也是这个正确的做法还是应该我不是通过一个明确的终点“API /任务”暴露的任务,虽然任务不能孤立存在。它们总是绑定到配置上。

我想你已经回答了这个时候你的状态Each configuration can have a 'Task' associated with it.

如果你把你的控制器“光”,并确保业务逻辑举行别处,将新路由/控制器/动作变得微不足道。

如果你想,你可以保留在一个ConfigurationTasks控制器,同时仍然有一个ConfigurationTask控制器。