【问题标题】:Is there a way to jointly create a RESTful API and one or several SDKs有没有办法联合创建一个 RESTful API 和一个或多个 SDK
【发布时间】:2014-05-03 19:39:43
【问题描述】:

我有一个在线服务,我为其提供了一个 RESTful API。这个 API 非常简洁和完整,但我的客户希望通过 SDK 访问它。现在,我的客户在语言方面都有不同的需求:Go、Python、C#,应有尽有。

但是,由于懒惰,我注意到抽象保持不变,并且我在任何地方都有相同的功能。有没有一种方法可以为所有这些 SDK 自动生成代码,前提是设计模型又好又干净?例如,UML 有用吗?还是我只需要创建一个匹配 API 调用的 C 库,然后使用一些 SWIG 魔法来生成绑定?

从技术上讲,我在 API 端使用 Django Rest Framework,但这不应该影响问题。

【问题讨论】:

    标签: c# python rest sdk multiple-languages


    【解决方案1】:

    当然,您可以使用 UML 来记录您的 REST API。与 REST 一样,它都是关于资源及其 CRUD 方法的,我建议使用限制性类图作为本文档的基础。

    这是一个有一些想法的例子:

    从这里创建导出器并使用任何技术生成客户端 API 也很容易。一些 UML 解析和选择性生成。这可能有点费时,尤其是对于新手来说,但相对简单。

    不过,这个简洁的可视化 API 规范对于 API 客户端开发人员来说已经是一个很好的输入。

    更新(在 cmets 之后)

    根据具体要求,您可以通过多种方式在 UML 中执行此操作。

    我的第一个想法是创建另一个类包(带有原型 REST-client)左右,它将(通过依赖项)连接到可以执行的相应方法。类的 atts 可用于存储附加信息。

    或者,您可以使用更具说明性的方法并将休息客户端显示为 UML 参与者。这是它的样子:

    请注意,这些特殊元素(actors 和 rest-client 类)应该在模型中的另一个包中清楚地分开,而不是强制显示在与资源相同的图表上。可追溯性矩阵(由一些 UML 工具支持)可能是指定此类补充信息的更好选择。

    如果您需要更多信息,请告诉我您希望如何处理身份验证和权限。

    【讨论】:

    • 看起来不错,但您将如何处理身份验证和权限?
    • 查看我的主要答案以获取更多信息。
    • 我猜应该通过 OAuth 机制处理身份验证,并且应该使用用户组来处理权限。我也想知道如何优雅地将这种类型的身份验证移植到 SDK
    • 所有这些客户端信息都应该存储在具有 > 构造型的类中(OAuth 服务器访问数据和类似的)。这些类是通用 SDK 规范的一部分(与任何具体的 REST 客户端平台无关)。如果您想更进一步并提供依赖于平台的 SDK,您应该将这个通用 UML 解决方案映射到具体实现(C++、C#、JavaScript 或其他)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多