投资担保网站建设,优化关键词的方法有哪些,图书宣传推广方案,安徽省铜陵市建设银行网站一、RESTful设计风格
基础概念
全称#xff1a;Representational State Transfer
1.资源 网络上的一个实体#xff0c;每个资源都有一个独一无二的URL与之对应#xff1b;获取资源-直接访问URL即可
2.表现层
资源的表现形式 如HTML、xml、JPG、json等
3.状态转化
…一、RESTful设计风格
基础概念
全称Representational State Transfer
1.资源 网络上的一个实体每个资源都有一个独一无二的URL与之对应获取资源-直接访问URL即可
2.表现层
资源的表现形式 如HTML、xml、JPG、json等
3.状态转化
访问一个URL即发生一次客户端和服务端得交互此次交互将会涉及到数据和状态得变化
客户端需要通过某些方式接触具体得变化 如GET、POST、PUT、PATCH、DELETE
设计原则
1.协议 - http/https
2.域名
域名中体现出api字样
https://api.example.com/v1 或 https://example.org/api/.
3.版本
https://api.example.com/v1 4.路径
路径中避免使用动词资源用名词表示
5.HTTP动词语义
GET、POST、PUT、PATCH、DELETE
示例 6.巧用查询字符串 7.状态码
1用HTTP响应码表达 2自定义内部code进行响应
{’code‘:00000,msg:success,data:{}} 二、用户系统 - ORM
model
class UserProfile(models.Model):usernamemodels.BigAutoField(verbose_name用户名,primary_keyTrue)nicknamemodels.CharField(max_length20,verbose_name昵称)passwordmodels.CharField(max_length32)email models.EmailField()phonemodels.CharField(max_length11)avatarmodels.ImageField(upload_toavatar,nullTrue)signmodels.CharField(max_length50,verbose_name个人签名,defaultdefault_sign)infomodels.CharField(max_length150,verbose_name个人简介,default)created_timemodels.DateTimeField(auto_now_addTrue)updated_timemodels.DateTimeField(auto_nowTrue)class Meta:db_table user_user_profile
三、用户系统-注册
只处理后端
from models import UserProfile
import hashlib
# 数据校验 前后端都要做
class UserViews(APIView):def post(self,request):username request.data[user]nickname request.data[nick]email request.data[email]password_1 request.data[password_1]password_2 request.data[password_2]phone request.data[phone]# 参数基本检查if password_1 ! password_2:return Response(密码不一致)# 用户名可不可用old_users UserProfile.objects.filter(usernameusername)if old_users:return Response(用户名已被使用)# 插入数据MD5p_m hashlib.md5()p_m.update(password_1.encode())UserProfile.objects.create(usernameusername,nicknameusername,passwordp_m.hexdigest(),emailemail,phonephone)return Response(注册成功)
四、用户系统-登录
views
class LoginViews(APIView):def post(self,request):username request.data[user]password request.data[psd]user_info UserProfile.objects.filter(usernameusername)if not user_info:return Response(用户不存在)p_m hashlib.md5()p_m.update(password.encode())if p_m.hexdigest() ! user_info.first().password:return Response(密码不正确)return Response(登录成功)
五、用户系统-jwt