API 设计 : Separate or combine internal with external functions?

标签 api web-applications architecture

举个简单的例子,假设您在站点中创建留言簿,并计划通过 API 为创建和读取函数提供外部访问权限。 API 中不包含更新和删除,因为它只能在内部使用。

什么是更好的做法?

  • 通过 API 使整个 CRUD 功能可用,并且只限制对更新和删除的公共(public)访问。因此,您自己也将使用 API 进行应用程序的所有内部工作。
  • 为所有内部工作创建没有 API 的内部 CRUD 函数,然后为创建和只读创建单独的 API。基本上,这为您提供了两种使用 Create 和 Read 的方法 - 一种使用 API,一种没有。
  • 在没有 API 的情况下为内部工作创建内部更新和删除函数,然后为创建和只读创建 API。如果您需要使用 Create 和 Read 函数进行内部工作,那么您必须使用 API。

  • 我希望这很清楚,通常最好的做法是什么?

    最佳答案

    我喜欢第一个选项。它有一个清晰的例子,即关注点分离和在正确的上下文中使用正确的工具。

    通过对 API 使用 CRUD 方法,您可以获得一致性和完整性。它导致设计更加连贯,代码重复更少,并且更容易演变。安全方面可以在支持 API 的应用程序内部或外部实现。对于外部选项,您可以使用 3-d 方软件或硬件解决方案,例如防火墙。

    关于API 设计 : Separate or combine internal with external functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234617/

    相关文章:

    c# - 建议简化我的体系结构... asp.net mvc

    android - 使用osmdroid获取当前位置时出现空指针异常

    python-3.x - flutter 和 Flask REST API 之间的数据解析

    c# - 静态对象/变量是否存储在 .NET 上的 Web 应用程序的缓存/ session 中?

    javascript - iPad 网络应用程序。 Javascript,加载所有内容还是切换页面?

    web-applications - 您如何构建像 Firebase 这样的应用程序?

    java - Java读取/操作Wav文件

    C#在重定向的HttpWebRequest中发送cookie

    javascript - 无法使用 Google App 脚本打开 FilePicker

    database - 如何在微服务上管理多个数据库?