栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

04RESTful的介绍

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

04RESTful的介绍

目录
  • 一、RESTful
    • 1.请求与响应
    • 2.设计规范
  • 二、DRF项目初始化
    • 1.DRF概述
    • 2.日志器
  • 三、序列化器
    • 1.概念
    • 2.创建步骤
  • 四、视图集
    • 1.概念
    • 2.创建视图集

一、RESTful 1.请求与响应

1.HTTP请求
分为:
1)请求行
请求方式:POST、GET、PUT、DELETe
常见的协议版本:HTTP/1.1
2)请求头
Cookie:浏览器缓存
Content type:请求内容类型 等等……
3)请求体:请求的主体数据

2.HTTP响应
1)响应行
保存有HTTP协议版本、状态码
2)响应头
Set-Cookie:服务器向浏览器写入cookie
Content-type:响应类型 等等……
3)响应体

2.设计规范

RESTful设计风格是一种接口设计规范,解决不同开发人员按照自己习惯与风格开发出来的接口,有一定的差异性
1.请求方式:分为四种,每一种都对应一个操作
1)GET:(SELECT操作)从服务器获取资源
2)POST:(CREATE操作)给服务器提交资源
3)PUT:(UPDATE操作)请求中的负载创建或者替换目标资源
4)DELETE:(DELETE操作)删除资源

2.请求地址
比如学生管理系统:
请求方法 请求地址 后端操作 响应
GET /students 获取所有学生 数组
POST /students 增加学生 创建的对象
GET /students/1 获取id为1的学生 单个对象
PUT /students/1 修改id为1的学生 修改后的对象
DELETE /students/1 删除id为1的学生 空

3.状态码
1)状态码分类:
分类   分类描述
1**   信息,服务器收到请求,需要请求者继续执行操作
2**   成功,操作被成功接收并处理
3**   重定向,需要进一步的操作以完成请求
4**   客户端错误,请求包含语法错误或无法完成请求,如404,400
5**   服务器错误,服务器在处理请求的过程中发生了错误

2)常见的状态码:
状态码  描述
200   请求成功
302   请求重定向
304   请求资源没有改变,访问本地缓存
404   路径编写错误,或者服务器资源不存在
500   服务器内部错误,服务端代码程序出现错误,抛异常

二、DRF项目初始化 1.DRF概述

1.DRF是Django Rest Framework的缩写,是一个内置在Django里面的子应用,可以快速的开发REST API接口应用,就是一个Django插件或者说是拓展

2.开发新项目
1)打开MobaXterm,创建新的虚拟环境。

2)下载django框架:pip install django -i https://pypi.douban.com/simple

3)下载djangorestframework:pip install djangorestframework -i https://pypi.douban.com/simple

4)下载pymysql,后续会用到:pip install pymysql -i https://pypi.douban.com/simple

5)cd drf6进入到上次创建的线上仓库。

6)在仓库中创建django项目,后续可以进行版本的控制。

7)打开pycharm新建项目。

8)配置解释器

9)输入密码,点击next

10)选择解释器,点击finish,最后点击create创建

11)配置同步目录,点击Tools——>deployment——>configurations

重新命名为drf6,选择同步路径

后两个改为根目录,点击ok

12)将项目下载到pycharm中

13)点击settings

找到django

配置项目根目录等基本信息

14)配置启动服务

填写基本信息

15)启动项目,浏览器访问127.0.0.1:8000,出现下图小火箭表示项目创建成功。

16)配置作者信息 。说明该文件是由该作者编写的,每次新建python文件时就会自动配置作者信息。

17)创建项目数据库。进入数据库:mysql -uroot -p,输入密码:Root123

创建一个名为drf6的数据库,编码格式为utf8

18)创建项目用户。每一个项目都应该有独立的数据库,每一个库都应该有独立的用户。该用户只能操作该项目的库,用于权限的管理。
命令: CRANT ALL PRIVILENGES ON drf6 .* TO drf6_user@‘%’ IDENTIFIED BY ‘qwe123’; 授予drf6这个数据库的所有权限给drf6_user用户,并且允许他远程登录,并设置用户密码qwe123。
注意:库名、表名、字段名都是反引号。

然后刷新权限

19)退出后重新登录进入创建的数据库。这时候就只有drf6这个数据库的操作权限了。

20)回到PyCharm打开init.py文件,设置连接器为mysql连接器。

21)打开settings.py文件,编写DATABASES字段信息。
注意:直接在setting.py文件中配置mysql连接信息,暴露mysql服务器地址、用户名、密码会带来的问题:
1.如果开源,上传到线上仓库gitee,别人就会盗取
2.不方便修改和管理,在实际开发中,生产是一个数据库,开发是一个数据库
因此,在项目下新建一个名为config的文件夹,在该文件夹下进行分类,创建一个dbs的文件夹,在该文件夹下创建一个mysql_dev.cnf的文件

22)在MobaXterm配置线上仓库过滤,不将config里面的信息上传到线上仓库中
首先进入.gitignore文件夹

添加不上传的文件路径

将rest_framework注册进去

23)添加日志器,看第2点
24)进行迁移和映射,快捷键:ctrl+Alt+R,输入makemigrations和migrate
25)重新调整文件目录架构,新建一个名为apps的文件夹,右键,将该文件设置为资源文件目录,之后新创建app后就可以直接挪到apps文件夹中。

26)此时新创建的app在settings.py中注册的时候需要注意,我们的模块是放在apps文件夹下的,因此,我们需要将apps的目录添加到系统路径中去。

2.日志器

用于记录系统运行过程中的各种日志信息,在项目根目录中创建一个logs文件夹,用于存放日志文件
1.进入django官方文档中找到日志记录:https://docs.djangoproject.com/en/4.0/
2.找到examples示例,看具体做法,在settings.py中导入os模块,然后添加LOGGING字段信息。

三、序列化器 1.概念

序列化器本质就是一个类,和模型类差不多的类,用于JSON与模型对象互转以及校验数据
1.序列化:将模型转换为json数据
1)实例化序列化器
2)将模型对象或查询集传入instance参数,如果是多条数据需要传入many=True

2.反序列化:将json或表单数据转为模型对象
1)实例化序列化器
2)将要反序列化的数据传入data参数,调用save方法进行创建,如果还传入了instance参数,则调用sava方法进行修改

2.创建步骤

1.在drfstudy文件夹下创建一个名为serializers的py文件

2.根据创建的模型字段编写序列化器的字段内容

四、视图集 1.概念

DRF允许你将一组相关视图的逻辑组合在单个类中。ViewSet只是一种基于类的视图,它不提供任何方法处理程序,如get()或post(),而是提供诸如list()和create()子类的操作,ViewSet的方法处理程序仅使用as_view方法绑定到完成视图的响应操作。

2.创建视图集

1.在views.py文件中添加如下代码:

from django.shortcuts import render
from rest_framework import viewsets
from rest_framework .response import Response
from .models import *
from .serializers import *
# Create your views here.

# 视图集:封装事物所有操作的类
# 定义类继承ViewSet类
# 定义对应的操作方法:create:创建单条,list:查询所有,retrieve:查询单条,update:修改,delete:删除
class StudentViewSet(viewsets.ViewSet):
    def list(self,request):
        """
        编写了查询所有学生的接口,根据restful设计风格定义路由:请求方式、请求地址
        """
        students = Student.objects.all() #返回的是查询集
        #实例化序列化器,对查询集进行格式转换,将查询集类型转为json格式类型,many=True返回的数据是多条的
        #转为的json格式是列表格式
        serializer = StudentSerializer(students,many=True)
        #序列化器对象.data是得到转换后的json格式数据
        return Response(serializer.data)

2.最后启动项目访问,得到如下页面

整体流程:编写models.py文件——>编写serializer.py文件——>编写views.py视图集——>编写路由

3.添加数据的效果,如下图所示

4.推送到线上仓库,进行数据持久化。每天编写结束后将项目推送到线上仓库进行备份
1)查看状态

2)提交,经过过滤后此时是没有提交config文件的

3)推送到线上仓库。此时就能在gitee上查看到自己上传的项目,如果之后电脑换了,只需要将线上仓库代码克隆下来就好

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号