django – 设计RESTful API
我正在设计一个REST API作为一个初创公司的
Android应用程序的后端服务.该创业公司目前拥有大约10万用户的网络版服务.我对Web API的设计有一些疑问:
>如何确保我的API安全? 我只希望Android客户端访问API,而不是其他任何人.一种方法是从前端发送加密令牌并在后端解密.还有其他方法吗?另外,我应该如何实现它? >如何使我的API快速高效? 存在非常频繁访问的特定端点.但该端点上的信息并没有太大变化.因此,在短时间内做出的请求最有可能返回相同的响应.如何更快地响应此类请求? ETag和Last-Modified会做这个工作吗? >我应该信任来自客户的数据吗? 目前,当我收到带有某个参数的请求时,我对请求执行的唯一检查是检查参数是否为空.例如.如果请求将移动设备作为参数,则仅检查请求中是否存在移动参数.我不执行其他检查,例如检查移动设备的长度是否小于10然后抛出异常. 编辑: 解决方法
我正在创办一家初创公司,我有几乎同样的问题需要解决.我认为唯一的区别在于第一个问题,因为我决定将API访问权限仅限于经过身份验证的用户.但是,这是我解决问题的方法:
1.如何确保我的API安全? 正如我所写的,我将API访问仅限于经过身份验证的用户.我正在使用基于令牌的身份验证与我自己的REST注册/身份验证API端点基于以下包: > django-rest-framework 如果你想使用这个解决方案,我建议你也看看django-rest-auth. 2.如何使我的API快速高效? 如果您有“在短时间内提出并且最有可能返回相同响应的请求”,我建议您缓存此响应,如下所示(最简单的版本): if response_in_cache and time_passed < max_time_frame: return response_in_cache else: generate response save response in the cache (for next time) return response 您还可以使用New Relic跟踪您的api表演. 3.我应该信任客户的数据吗? 绝对不!尝试将7.5000用于RESTful API.它提供了一个名为Serializer的类,它为您提供了一种强大的方法来控制请求/响应的输入/输出.这是一个例子: 你的序列化器 class CommentSerializer(serializers.Serializer): email = serializers.EmailField() content = serializers.CharField(max_length=200) created = serializers.DateTimeField() 验证 serializer = CommentSerializer(data={'email': 'foobar','content': 'baz'}) serializer.is_valid() # False serializer.errors # {'email': [u'Enter a valid e-mail address.'],'created': [u'This field is required.']} 看看serializer documentation. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |