宁静的WebAPI VS常规控制器(Restful WebAPI VS Regular Contro

2019-10-18 20:55发布

我在做什么似乎是一个非常令人困惑的话题了一些R&d,我也看了不少其他SO问题的,但我觉得我的问题可能是唯一的,足以保证我问。 我们从来没有开发使用纯的WebAPI的应用程序。

我们试图写一个SPA风格的应用程序,在后端完全从前端代码分离

假设我们的服务不知道谁在访问/消耗任何东西:

的WebAPI好像逻辑路线提供数据,而不是使用标准MVC控制器,并通过一个动作的结果为我们的数据,并将其转换成JSON。 这至少对我来说似乎是一个MC设计...这似乎很奇怪,并没有什么MVC是为那些。 (看妈妈......没有意见)

怎样才算正常惯例在执行动作(Y)调用的条款?

我的感觉是,我的WebAPI的理解不正确。

我看的WebAPI的方式,就是它意味着一个CRUD意义上被使用,但如果我想要做的事,如:“InitialiseMonthEndPayment” ......我会需要创建的WebAPI控制器,叫InitialiseMonthEndPaymentController,然后执行一个POST ......似乎有点不可思议,而不是一个MVC控制器,在那里我可以只叫InitialisePayment的MonthEnd控制器上增加了新的动作。

抑或这需要在设计方面心态转变?

有关这个主题的任何进一步的链接将是非常有用的,因为我担心的是我们实现的东西,可能是怪异的可能变成一个编码/维护的关注以后?

Answer 1:

如果您打算让您的服务REST风格的控制器应代表的资源。 在您的示例中,资源是Payment ,因此控制器将被称为PaymentController

你可以在同一个控制器的多POST方法。 在你的情况,我会打电话的操作方法PostMonthlyPayment或类似的东西。 该URL(路由)会是什么样子http://server.com/api/payment/monthly和身体(假设JSON)会是这样的:

{
   user: user@internet.com,
   month: 10,
   year: 2013,
   // any additional data
}

如果付款成功,一个好的做法是返回HTTP错误代码201,并包含URL来支付GET方法的位置HTTP头。 如果身体中的任何数据是错误的,返回一个错误代码400。如果支付已经由用户做出的冲突代码409可以工作。



Answer 2:

对于SPA,你一定会需要REST的Web服务队。 我的建议是尝试servicestack代替的WebAPI



文章来源: Restful WebAPI VS Regular Controllers