单个 API 端点优缺点
Single API endpoint pros and cons
我正在创建 API 并试图找出计划好的方法。
API 不是 public,它将被我构建的 SPA 和移动应用程序使用。
所以我正在考虑类似 GraphQL 的设计,但没有发布 json 和使用常规 HTTP 方法。
GET 方法是这样的:
示例1 - 获取特定字段的用户(_join表示sql table加入),排序和限制:
api.com?table=users&displayFields=id,name,email,address,tel,country_join&orderBy=asc&orderColumn=name&offset=0&limit=10
示例 2 - 根据具有所有字段、排序和限制的搜索参数获取用户:
api.com?table=users&search=John&searchFields=name,email&orderBy=asc&orderColumn=name&offset=0&limit=10
我认为这很糟糕,因为 REST 是标准的,否则我会看到更多这种方法的例子。
但是为什么这样不好呢?对我来说似乎更容易开发,使用起来更灵活。
对于我提供的示例,适当的 REST API 是否更易于实施、更安全、更易于使用或缓存?
我看到将变量放入 url 与请求正文之间的主要区别是:
- 数据长度为url长度限制,而请求正文没有
- 在 url 中需要转义的特殊字符会导致长而不清楚 url
这些是支持请求正文中数据的 2 个优点,但我同意 url 中的数据更易于测试和使用,因为您不需要像 c[=37 这样的 http 客户端工具=] 或 postman 验证您的端点。
然而,如果您想完全实现 REST,它有更严格的约定:
- 使用正确的 http 请求(get、post、patch、delete 和 put)在一个端点上实施 crud 操作
- return 结果是正确的 http 代码
- 使用标准数据格式进行输入和输出(json 或 XML)
为了更好地实现系统间的互操作性,建议遵守 REST 和微服务设计模式。
对于小型应用程序,我们可以走一些捷径而不是完全遵守。到目前为止,我已经集成了多项服务,但每次我都可以告诉你,没有一项服务实现了标准 REST :-)
我正在创建 API 并试图找出计划好的方法。
API 不是 public,它将被我构建的 SPA 和移动应用程序使用。
所以我正在考虑类似 GraphQL 的设计,但没有发布 json 和使用常规 HTTP 方法。
GET 方法是这样的:
示例1 - 获取特定字段的用户(_join表示sql table加入),排序和限制:api.com?table=users&displayFields=id,name,email,address,tel,country_join&orderBy=asc&orderColumn=name&offset=0&limit=10
示例 2 - 根据具有所有字段、排序和限制的搜索参数获取用户:api.com?table=users&search=John&searchFields=name,email&orderBy=asc&orderColumn=name&offset=0&limit=10
我认为这很糟糕,因为 REST 是标准的,否则我会看到更多这种方法的例子。
但是为什么这样不好呢?对我来说似乎更容易开发,使用起来更灵活。
对于我提供的示例,适当的 REST API 是否更易于实施、更安全、更易于使用或缓存?
我看到将变量放入 url 与请求正文之间的主要区别是:
- 数据长度为url长度限制,而请求正文没有
- 在 url 中需要转义的特殊字符会导致长而不清楚 url
这些是支持请求正文中数据的 2 个优点,但我同意 url 中的数据更易于测试和使用,因为您不需要像 c[=37 这样的 http 客户端工具=] 或 postman 验证您的端点。
然而,如果您想完全实现 REST,它有更严格的约定:
- 使用正确的 http 请求(get、post、patch、delete 和 put)在一个端点上实施 crud 操作
- return 结果是正确的 http 代码
- 使用标准数据格式进行输入和输出(json 或 XML)
为了更好地实现系统间的互操作性,建议遵守 REST 和微服务设计模式。
对于小型应用程序,我们可以走一些捷径而不是完全遵守。到目前为止,我已经集成了多项服务,但每次我都可以告诉你,没有一项服务实现了标准 REST :-)