RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
RESTFUL特点包括:
1.Django中Resful路由代码
from django.conf.urls import url
from django.contrib import admin
from . import views
urlpatterns = [
url(r'^books/$',views.BooksView.as_view() ),
url(r'^books/(?P\d+)/$',views.BookView.as_view() ),
]
2.Django中Resful业务代码
import os
from django.shortcuts import render, reverse
from django.views import View
from book.models import BookInfo, HeroInfo
from django.conf import settings
from django.http import JsonResponse, HttpResponse
from django.template import loader
import json
class BooksView(View):
"""
获取所有图书和保存图书
"""
def get(self, request):
"""
获取所有图书
:param request:
:return:
"""
books = BookInfo.objects.all()
book_list = []
for book in books:
data = {
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bpub_date': book.bpub_date
}
book_list.append(data)
return JsonResponse({'book_list': book_list})
def post(self, request):
"""
保存图书
:param request:
:return:
"""
data = request.body.decode()
data_dict = json.loads(data)
btitle = data_dict.get('btitle')
bpub_date = data_dict.get('bpub_date')
if btitle is None or bpub_date is None:
return JsonResponse({'error': '缺少必要数据'})
book = BookInfo.objects.create(btitle=btitle, bpub_date=bpub_date)
return JsonResponse(
{
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bpub_date': book.bpub_date
}
)
class BookView(View):
"""
获取单一图书数据
更新图书
删除图书
"""
def get(self, request, pk):
"""
获取单一图书数据
:param request:
:param pk:
:return:
"""
try:
book = BookInfo.objects.get(id=pk)
except:
return JsonResponse({'error': '错误的id值'})
return JsonResponse(
{
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bpub_date': book.bpub_date
}
)
def put(self, request, pk):
"""
更新图书
:param request:
:param pk:
:return:
"""
data = request.body.decode()
data_dict = json.loads(data)
btitle = data_dict.get('btitle')
bpub_date = data_dict.get('bpub_date')
if btitle is None or bpub_date is None:
return JsonResponse({'error': '缺少必要数据'})
num = BookInfo.objects.filter(id=pk).update(**data_dict)
book = BookInfo.objects.get(id=pk)
return JsonResponse(
{
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bpub_date': book.bpub_date
}
)
def delete(self, request, pk):
"""
删除图书
:param request:
:param pk:
:return:
"""
try:
book = BookInfo.objects.get(id=pk)
except:
return JsonResponse({'error': '错误的id值'})
book.is_delete = True
book.save()
return JsonResponse({})
Resful接口增删改查接口说明:
1、查询
查询传统REST查询所有http://localhost:8080/employee/listhttp://localhost:8080/employees查询单个http://localhost:8080/employee/list?id=1http://localhost:8080/employees/1
2、添加
添加传统REST添加http://localhost:8080/employee/addhttp://localhost:8080/employees
3、修改
修改传统REST修改http://localhost:8080/employee/updatehttp://localhost:8080/employees
4、删除
删除传统REST删除http://localhost:8080/employee/deletehttp://localhost:8080//employees/{id}
返回状态码说明:
状态码含义200OK – [GET] 服务器成功返回用户请求的数据201CREATED – [POST/PUT/PATCH] 用户新建或修改数据成功202Accepted 表示一个请求已经进入后台排队(异步任务)204NO CONTENT – [DELETE] 用户删除数据成功400INVALID REQUEST – [POST/PUT/PATCH] 用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的401Unauthorized – [] 表示用户没有权限(令牌、用户名、密码错误)403Forbidden – [] 表示用户得到授权(与401错误相对),但是访问是被禁止的404NOT FOUND – [] 用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的405Method Not Allowed 方法不允许,服务器没有该方法406Not Acceptable – [GET] 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)410Gone -[GET] 用户请求的资源被永久删除,且不会再得到的422Unprocesable entity – [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误500INTERNAL SERVER ERROR – [] 服务器发生错误,用户将无法判断发出的请求是否成功
Original: https://blog.csdn.net/aa2528877987/article/details/124113826
Author: 愚公搬代码
Title: 【愚公系列】2022年04月 Python教学课程 61-Django框架Resful接口
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/735750/
转载文章受原作者版权保护。转载请注明原作者出处!