【问题标题】:Internal vs external api methods内部与外部 api 方法
【发布时间】:2014-12-07 19:48:35
【问题描述】:

我正在开发一个 API 并决定是否应该区分外部调用和内部调用。我在想我会为内部和外部 API 使用相同的控制器类(例如:ProductsController.cs(处理产品资源)),对内部和外部使用不同的方法(作为不同的参数和不同的返回对象,以及不同的授权)消耗。我认为如果我想将 api 更改为内部但不想更改为内部,这可能会成为维护的噩梦,而且哪个是哪个并不明显。我在想,也许不同的控制器文件更容易维护,但我知道它们处理的是相同的资源,所以我正在内部争论,这将是最好的方向。我还意识到,更改 api 很可能会强制更改内部和外部 api,因此版本控制也将发挥作用。任何建议将不胜感激。

【问题讨论】:

    标签: asp.net api asp.net-web-api


    【解决方案1】:

    虽然他们都处理相同的资源,但他们的处理方式与您所说的完全不同,所以看起来您的 ProductsController 最终会做两件非常不同的事情。

    对我来说,很明显你需要将它们分开。

    您可以将它们放入不同的namespaces,甚至不同的Areas。如果你碰巧有一些共享逻辑,你可以在基类中拥有它。

    【讨论】:

    • 是的,我比较担心改变api的接口,影响到外部。它们是相同的实际资源,因此我很难将其设为不同的控制器。
    • 是的,但据我了解,您以两种截然不同的方式提供相同的资源。虽然在存储库中它可能是同一个资源,但您的 API 像两种不同的资源一样为它提供服务。
    • 只提供对象的不同视图。
    • 好吧,你已经征求意见了。这是我的:)
    • 我有一个内部托管的 MVC Web API(例如myweb:123),只能从网络内部访问。我怎样才能让它让外部的人也可以访问它?
    【解决方案2】:

    您可以创建公共(外部)和私有(内部)文件夹,并在两者中都有一个 Products 控制器。它们可能不相关或共享一个基类。

    【讨论】:

    • 我有一个内部托管的 MVC Web API(例如myweb:123),只能从网络内部访问。我怎样才能让它让外部的人也可以访问它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多