短信验证码接口,短信验证接口平台

4747 321 2022-09-10

本文讲了短信验证码接口,短信验证接口平台。

后台

urls.py

path('sms/', views.SMSViewSet.as_view({'get': 'send'})),

throttles.py

from rest_framework.throttling import SimpleRateThrottlefrom django.core.cache import cachefrom django.conf import settings# 结合手机验证码接口来书写class SMSRateThrottle(SimpleRateThrottle):
    scope = 'sms'
    def get_cache_key(self, request, view):        # 手机号是通过get请求提交的
        mobile = request.query_params.get('mobile', None)        if not mobile:            return None  # 不限制
        # 手机验证码发送失败,不限制,只有发送成功才限制,如果需求是发送失败也做频率限制,就注释下方三行
        code = cache.get(settings.SMS_CACHE_KEY % {'mobile': mobile})        if not code:            return None
        return self.cache_format % {            'scope': self.scope,            'ident': mobile,
        }PYTHON复制全屏

const.py

# 短信验证码缓存keySMS_CACHE_KEY = 'sms_cache_%(mobile)s'# 短信验证码缓存时间sSMS_CACHE_TIME = 300

dev.py

REST_FRAMEWORK = {    'EXCEPTION_HANDLER': 'utils.exception.exception_handler',    'DEFAULT_THROTTLE_RATES': {        'sms': '1/min'
    }
}

views.py

from libs import tx_smsfrom django.core.cache import cachefrom django.conf import settingsfrom .throttles import SMSRateThrottleclass SMSViewSet(ViewSet):    # 设置频率限制,一个手机号一分钟只能访问一次
    throttle_classes = [SMSRateThrottle]    def send(self, request, *args, **kwargs):        # return APIResponse(result=False)
        # 1)接收前台手机号验证手机格式
        mobile = request.query_params.get('mobile', None)        if not mobile:            return APIResponse(1, 'mobile field required')        if not re.match(r'^1[3-9][0-9]{9}$', mobile):            return APIResponse(1, 'mobile field error')        # 2)后台产生短信验证码
        code = tx_sms.get_code()        # 3)把验证码交给第三方,发送短信
        result = tx_sms.send_code(mobile, code, settings.SMS_CACHE_TIME // 60)        # 4)如果短信发送成功,服务器缓存验证码(内存数据库),方便下一次校验
        if result:
            cache.set(settings.SMS_CACHE_KEY % {'mobile': mobile}, code, settings.SMS_CACHE_TIME)        # 5)响应前台短信是否发生成功
        return APIResponse(result=result)

不同国际短信平台的使用感受简直是大相径庭

遇上垃圾短信平台就是沙漠里盼水喝------干着急

感受可谓是遥遥无期、望眼欲穿、心灰意冷。。。

image.png

二.Twilio

Twilio是美国的一款短信平台,在国外都是领先地位。

资历来说,WhatsApp、Uber 等新兴互联网公司,索尼、可口可乐等传统行业都是用的Twilio。技术方面有大企业背书,并且公司成立到现在有14年,可以说是云通信行业里的元老。

价格方面,比国内很多短信接口平台的价格都低,甚至有些地域比国内平台给的价格低五倍的,实惠标杆。

整体来看,Twilio不失为一个好的选择,不过对使用者的英文有要求。

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)短信验证接口分析、比较及推荐。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:发短信常识分享:什么是短信发送接口?发送短信接口未成功
下一篇:玩转Kubernetes—使用minikube操作集群
相关文章

 发表评论

暂时没有评论,来抢沙发吧~