宁静的WebAPI VS常规控制器

罗汉·布希纳(RohanBüchner)

我正在对一个看起来非常令人困惑的主题进行一些研发,我也阅读了很多其他的SO问题,但是我觉得我的问题可能很独特,足以使我发问。我们从未使用纯WebAPI开发应用程序。

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

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

与使用标准MVC控制器相反,WebAPI似乎是提供数据的逻辑途径,而不是通过操作结果来提供数据并将其转换为JSON。在我看来,至少这似乎是一个MC设计……这似乎很奇怪,而不是MVC的目的。(看妈妈...没意见)

就执行动作(y)调用而言,什么被视为正常惯例?

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

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

还是这需要在设计方面转变思维方式?

关于此主题的任何其他链接将非常有用,因为我担心我们实施的方法可能很奇怪,以后可能会变成编码/维护问题吗?

德米特里S.

如果计划使服务成为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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

laravel控制器中缺少5种宁静的方法

来自分类Dev

laravel控制器中缺少5种宁静的方法

来自分类Dev

webapi中的宁静查询签名

来自分类Dev

WebApi控制器返回空数据

来自分类Dev

名称为“ <> c”的webapi控制器

来自分类Dev

WebAPI控制器中的MVC路由

来自分类Dev

WebAPI控制器中的ConfigureAwait(false)

来自分类Dev

WebAPI控制器忽略CORS

来自分类Dev

单元测试WEBAPI控制器

来自分类Dev

如何调用通用的 WebApi 控制器?

来自分类Dev

宁静的版本控制

来自分类Dev

如何在春季启动时从宁静的控制器返回html页面?

来自分类Dev

Grails generate-controller使一个糟糕的宁静控制器

来自分类Dev

如何自定义grails宁静的控制器错误响应

来自分类Dev

Grails generate-controller使一个糟糕的宁静控制器

来自分类Dev

控制器调用另一个控制器C#WebApi

来自分类Dev

与 MVC 控制器相比,WebAPI 控制器有哪些优势?

来自分类Dev

WebAPI如何指定将到达控制器的路由

来自分类Dev

在WebApi 2控制器中获取标题值

来自分类Dev

将WebApi控制器从库托管到IIS

来自分类Dev

如何在WebAPI控制器中接收动态数据

来自分类Dev

WebAPI控制器相同的动作不同的参数

来自分类Dev

在WebApi和MVC控制器之间共享逻辑?

来自分类Dev

REST WebAPI-动作和子控制器呢?

来自分类Dev

WebAPI控制器继承和属性路由

来自分类Dev

通过Webapi控制器下载文件-处理错误

来自分类Dev

将多个查询发送到Webapi控制器

来自分类Dev

WebApi中控制器名称的连字符URL

来自分类Dev

在delegatinghandler中更改webapi控制器操作参数