我正在对一个看起来非常令人困惑的主题进行一些研发,我也阅读了很多其他的SO问题,但是我觉得我的问题可能很独特,足以使我发问。我们从未使用纯WebAPI开发应用程序。
我们正在尝试编写SPA风格的应用程序,其中后端与前端代码完全脱钩
假设我们的服务不知道谁在访问/使用它:
与使用标准MVC控制器相反,WebAPI似乎是提供数据的逻辑途径,而不是通过操作结果来提供数据并将其转换为JSON。在我看来,至少这似乎是一个MC设计……这似乎很奇怪,而不是MVC的目的。(看妈妈...没意见)
就执行动作(y)调用而言,什么被视为正常惯例?
我的感觉是我对WebAPI的理解不正确。
我认为WebAPI的方式是要在CRUD的意义上使用,但是如果我想做类似的事情:“ InitialiseMonthEndPayment” ...我需要创建一个名为InitialiseMonthEndPaymentController的WebAPI控制器,然后执行POST ...似乎有点怪异,与MVC控制器相反,在MVC控制器中,我可以在MonthEnd控制器上添加一个名为InitialisePayment的新操作。
还是这需要在设计方面转变思维方式?
关于此主题的任何其他链接将非常有用,因为我担心我们实施的方法可能很奇怪,以后可能会变成编码/维护问题吗?
如果计划使服务成为RESTful,则控制器应代表资源。在您的示例中,资源为Payment
,因此将调用控制器PaymentController
。
同一控制器中可以有多个POST方法。在您的方案中,我将调用操作方法PostMonthlyPayment
或类似方法。URL(路由)看起来像http://server.com/api/payment/monthly
,正文(假设JSON)是这样的:
{
user: [email protected],
month: 10,
year: 2013,
// any additional data
}
如果付款成功,则优良作法是将HTTP错误代码201和包含URL的Location HTTP标头返回到付款GET方法。如果正文中的任何数据有误,则返回错误代码400。如果用户已经付款,则冲突代码409可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句