【发布时间】:2015-01-02 16:49:05
【问题描述】:
我正在设计一个 REST API 作为启动的 android 应用程序的后端服务。这家初创公司目前拥有其服务的网络版本,拥有大约 1 万名用户。我对 Web API 的设计有几个疑问:
- 如何确保我的 API 安全?
我希望只有 Android 客户端可以访问 API,其他任何人都不需要。一种方法是从前端发送加密令牌并在后端解密。还有其他方法吗?另外,我应该如何实现它?
- 如何让我的 API 快速高效?
有一个非常频繁访问的特定端点。但是,该端点上的信息并没有太大变化。因此,在短时间内发出的请求最有可能返回相同的响应。如何更快地响应此类请求? ETag 和 Last-Modified 会完成这项工作吗?
- 我应该信任来自客户的数据吗?
目前,当我收到带有某些参数的请求时,我对请求执行的唯一检查是检查参数是否为null。例如。如果请求有 mobile 作为参数,我只检查请求中是否存在 mobile 参数。我不执行其他检查,例如检查 mobile 的长度是否小于 10 然后抛出异常。
编辑: 任何认为该问题“过于宽泛”的人,请发表评论,以便我可以编辑问题并添加任何必要的详细信息。
【问题讨论】:
-
这个问题很广泛,但这里有一些反馈。 1.“安全”可以mean many things。考虑您正在保护哪些资源,以及如何访问它们。对于您提到的特定任务,也许尝试通过 HTTPS 建立会话并传递令牌,但这本身就是一个完整的问题。 2. 可能有一些因素会影响 API 请求的延迟。尝试使用分析工具来确定花费最多的时间。缓存是一个不错的选择,但请考虑它在哪里完成(数据库?,会话?,应用程序?)。 3. 不,从来没有。
-
@pieman72 1. 所谓安全,我的意思是只有 android 客户端可以访问 API。我认为令牌可以正常工作。 2. 你能推荐一个好的分析工具来衡量 API 性能吗? 3. 是的,我不应该相信来自客户的数据并实施所有必要的检查。
-
您需要不同的工具,具体取决于您的应用程序堆栈,但看起来您使用的是 Django,所以可能是这样:https://code.djangoproject.com/wiki/ProfilingDjango
标签: django api rest http header