gpt4 book ai didi

rest - WebApi 和 OData

转载 作者:行者123 更新时间:2023-12-02 22:41:20 26 4
gpt4 key购买 nike

我是 WebApi 新手,不太理解

我确实知道所有动词都集中在 Get、Put、Post 和 Delete 上。但由于我有深厚的 DDD 和 MVC 背景,我需要一些指导。

我习惯于公开服务/资源/操作,无论你想如何调用它,它都会进行一些内部过滤。例如对于 SalesOrder 服务,我可能有 GetTodaysOrders 、 GetUnapprovedOrders 等操作。对“SalesOrder 集”应用某些过滤的操作

所以,在 WebApi 和一般情况下,我想我不应该这样做?我应该公开整个 SalesOrder 集吗?

过滤可以使用 OData 完成,但这会将了解要过滤什么内容的责任转移给消费者,消费者必须知道要询问什么,例如消费者必须了解任何领域/业务规则。这部分对我来说似乎完全陌生。

遇到这样的事情你会怎么处理?这可以通过某种方式处理吗?我并不是指以一种黑客的方式,比如为过滤某些数据的每种方式创建一个新的 Web API Controller 。

最佳答案

我感受到你的痛苦。我第一次真正被迫改变自己的思维方式是在我开始使用 Ruby On Rails 进行开发时。

关于一般的公开方法,请尝试按以下顺序进行:

  1. 首先公开资源的全套 CRUD 操作(也称为创建 RESTful 资源)
  2. 返回并私有(private)化那些不应该通过对这些方法进行预 Hook 和后 Hook 来公开的内容,以进行身份​​验证/权限检查等。

然后,当您获得资源时,一般来说,一个好的经验法则是在 ? 之前显示什么是必要的隐藏复杂性? 后面,从而使您的资源能够进行过滤,但不需要它。换句话说,用过滤来装饰你的方法。

那么,假设您想要一个 /orders 端点:

Base URL: /orders
REST params: /orders(:/id)
Additional params:
- dateRange
- purchaseStatus
- price
- etc
Example usage:
/orders?dateRange=1y&price=lt:100

当然,我这么说是因为我倾向于同意 APIGEE 在他们的 API 最佳实践白皮书中所说的内容。我想您会发现它很有帮助。

https://pages.apigee.com/rs/apigee/images/api-design-ebook-2012-03.pdf

关于rest - WebApi 和 OData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com