我正在做一些似乎是一个非常令人困惑的话题的R& D,我也读了很多其他的SO问题,但我觉得我的问题可能足够独特,值得我提问。我们从未使用纯WebAPI开发应用程序。
我们正在尝试编写SPA风格的应用,后端与前端代码完全分离
假设我们的服务不知道访问/使用它的人:
WebAPI似乎是提供数据的逻辑路径,而不是使用标准MVC控制器,并通过操作结果提供数据并将其转换为JSON。这对我来说至少看起来像是一个MC设计......这似乎很奇怪,而不是MVC的意思。 (看妈妈......没有看法)
在执行动作(y)调用方面,什么是正常约定?
我的感觉是我对WebAPI的理解不正确。
我认为WebAPI的方式是它意味着在CRUD意义上使用,但如果我想做类似的事情:“InitialiseMonthEndPayment”......我是否需要创建一个名为InitialiseMonthEndPaymentController的WebAPI控制器,然后执行POST ...看起来有点奇怪,而不是MVC控制器,我可以在MonthEnd控制器上添加一个名为InitialisePayment的新动作。
或者这是否需要在设计方面转变心态?
关于这个主题的任何进一步链接都非常有用,因为我担心我们会实施一些可能会很奇怪的东西,以后可能变成编码/维护问题?
答案 0 :(得分:2)
如果您计划将服务设为RESTful,则控制器应代表资源。在您的示例中,资源为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的位置HTTP标头返回到付款GET方法。如果正文中的任何数据有误,请返回错误代码400.如果用户已付款,则冲突代码409可以正常工作。
答案 1 :(得分:0)
对于SPA,您肯定需要REST Web服务。我的建议是尝试servicestack而不是WebApi