python的django框架是干嘛的_python-django rest framework框架

博客介绍了API接口的概念、用途及前后端分离的好处,阐述了restful的含义、与普通API的区别及规范,还介绍了restful api的两种方式。最后重点讲解了基于Django做API的两种方式,即FBV和CBV,并给出了相应的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.API 接口 是什么,干什么用的?

API简单的来说就是一个url

- http://www.oldboyedu.com/get_user/

- http://www.oldboyedu.com/get_users/两个用途:-为别人提供服务- 前后端分离

为什么要做前后端分离:

解耦

把前端分离出来,可以用前端框架,开发起来非常快

一个后端程序可以给多个客户端服务

2. restful是什么

-表征状态转移-面向资源编程,对互联网上的任意东西都视为资源。- http://www.oldboyedu.com/get_user/

- http://www.oldboyedu.com/get_img/1.png

3.普通的api与 restful api 的区别

普通API: 接口太多

姑娘列表:

http://www.oldboyedu.com/get_girls/http://www.oldboyedu.com/add_girl/http://www.oldboyedu.com/del_girl/1/http://www.oldboyedu.com/update_girl/1/restful api:

姑娘列表:

http://www.oldboyedu.com/girls/GET: 获取

POST: 添加

PUT: 更新

DELETE:删除

4. restful api 规范: 对请求有一个约定 ,遵循更好,不遵循也能用

-URL

api.sssss.com 有跨域的问题,因为不同源

http://www.sssss.com/api-url名词

视网络上任何东西都是资源,均使用名词表示(可复数)

https://api.example.com/v1/zoos

https://api.example.com/v1/animals

https://api.example.com/v1/employees

-版本 : 版本更新 http://www.sssss.com/api/v1/-提交方式

通过请求方式来判断你要做的操作

method :

GET :从服务器取出资源(一项或多项)

POST :在服务器新建一个资源

PUT :在服务器更新资源(客户端提供改变后的完整资源)#PATCH :在服务器更新资源(客户端提供改变的属性)

DELETE :从服务器删除资源-status : 不同的状态码代表着不同的意思

部分成功可以用 code来操作:1001 成功,1002部分成功,1003全部失败-Hypermedia link :看情况而定。可以直接返回json数据,也可以返回 一个url ,让前端再次放送请求查看具体的信息-错误详细 : 要返回给前端

OK -[GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

CREATED- [POST/PUT/PATCH]:用户新建或修改数据成功。

Accepted- [*]:表示一个请求已经进入后台排队(异步任务)

NO CONTENT-[DELETE]:用户删除数据成功。

INVALID REQUEST- [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

Unauthorized- [*]:表示用户没有权限(令牌、用户名、密码错误)。

Forbidden- [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

NOT FOUND- [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

Not Acceptable-[GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

Gone-[GET]:用户请求的资源被永久删除,且不会再得到的。

Unprocesable entity- [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

INTERNAL SERVER ERROR- [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

更多看这里:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

常用状态码

5. restful api 的两种方式

方式一:

http://www.oldboyedu.com/girls/GET: 获取

POST: 添加

PUT: 更新

DELETE:删除

方式二:

http://www.oldboyedu.com/girls/

-姑娘列表

http://www.oldboyedu.com/girl/1/

- 单独一个

6.基于Django做API

- FBV

---urlsfrom django.conf.urls importurlfrom app01 importviews

urlpatterns=[

url(r'^users/', views.users),

url(r'^user/(\d+)', views.user),

]---viewsfrom django.shortcuts importrender,HttpResponseimportjsondefusers(request):

response= {'code':1000,'data':None}

response['data'] =[

{'name':'盛松','age':19},

{'name':'鲁宁','age':20},

{'name':'解析博','age':5},

]return HttpResponse(json.dumps(response),status=200)defuser(request,pk):if request.method == "GET":return HttpResponse(json.dumps({'name':'盛松','age':19}))elif request.method == "POST":return HttpResponse(json.dumps({'code':1111}))elif request.method == "PUT":pass

elif request.method == "DELETE":pass

View Code

- CBV

至于为什么不直接用原始的django CBV做api,就是因为它的dispatch方法功能太少了,许多功能需要自己开发。

---urls

urlpatterns=[

url(r'^users', Users.as_view()),

]---viewsfrom django.views importViewfrom django.http importJsonResponseclassUsers(View):def get(self, request, *args, **kwargs):

result={'status': True,'data': 'response data'}return JsonResponse(result, status=200)def post(self, request, *args, **kwargs):

result={'status': True,'data': 'response data'}return JsonResponse(result, status=200)

View Code

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值