1

我正在对似乎非常令人困惑的话题进行一些研发,我还阅读了很多其他 SO 问题,但我觉得我的问题可能足够独特,值得我提问。我们从未使用纯 WebAPI 开发过应用程序。

我们正在尝试编写一个 SPA 风格的应用程序,其中后端与前端代码完全解耦

假设我们的服务不知道谁在访问/使用它:

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

就执行 action(y) 调用而言,什么被认为是正常的约定?

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

我对 WebAPI 的看法是,它的用途是在 CRUD 意义上使用,但是如果我想做类似的事情:“InitialiseMonthEndPayment”......我是否需要创建一个名为 InitialiseMonthEndPaymentController 的 WebAPI 控制器,然后执行一个 POST... 看起来有点奇怪,与 MVC 控制器相反,我可以在 MonthEnd 控制器上添加一个名为 InitialisePayment 的新操作。

或者这是否需要在设计方面进行思维转变?

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

4

2 回答 2

2

如果您计划使您的服务 RESTful,控制器应该代表一个资源。在您的示例中,资源是Payment,因此将调用控制器PaymentController

您可以在同一个控制器中拥有多个 POST 方法。在您的场景中,我会调用 action 方法PostMonthlyPayment或类似的方法。URL(路由)看起来像http://server.com/api/payment/monthly,而正文(假设 JSON)看起来像:

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

如果支付成功,一个好的做法是返回 HTTP 错误代码 201 和包含支付 GET 方法 URL 的 Location HTTP Header。如果正文中的任何数据有误,则返回错误代码 400。如果用户已经付款,则冲突代码 409 可以工作。

于 2013-10-30T13:58:03.850 回答
0

对于 SPA,您肯定需要 REST Web 服务。我的建议是尝试servicestack而不是 WebApi

于 2013-10-30T13:23:25.587 回答