加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

django – 设计RESTful API

发布时间:2020-12-20 13:46:54 所属栏目:Python 来源:网络整理
导读:我正在设计一个REST API作为一个初创公司的 Android应用程序的后端服务.该创业公司目前拥有大约10万用户的网络版服务.我对Web API的设计有一些疑问: 如何确保我的API安全? 我只希望Android客户端访问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-allauth

如果你想使用这个解决方案,我建议你也看看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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读