java api接口开发框架_API接口开发

本文介绍了如何使用Django REST Framework开发RESTful API接口,包括安装插件、配置settings、编写序列化、定义视图行为以及设置URL路由。通过这种方式,实现了数据接口的规范开发,方便前后端分离和批量脚本开发。
摘要由CSDN通过智能技术生成

00cea1e2873fe7b2143e43252b33387b.png

前言

在工作中,逐渐多的出现不使用页面展示数据,直接使用数据接口,这样有以下好处:

1.首先可以实现动静分离,将数据库的查询和页面的渲染彻底分开。

2.网站可以支持批量的脚本开发。

最原始的接口搭建是使用类视图搭建接口,但接口的规范很难约束,接着就出现了接口框架。使用框架进行规范的接口开发即restful,django具有restful的插件(djangorestframework)。下面来具体实现开发一个接口。

接口开发步骤

1.安装插件

Pip install djangorestframework

Pip install django-filter

Pip install Markdown (restful依赖包)

8e9d5408ca71c5057bca6633c69a7f05.png

2.配置settings

3a6a2849822e5218792a6d02184ef014.png

05531a9bba40e04446f7e645db95e754.png

注意:使用接口尽量需要有数据库模型

bdd9eeefb73492645d5f72c607f29b68.png

3.编写接口逻辑

3.1创建序列化,在对应APP下创建serializers.py.(名称可任意,但是通常项目中会这样写)

1. #当前文件只是为了规定接口模型和数据字段

2. from django.contrib import admin

3. from django.urls import path,include,re_path

4. from Buyer.views import index

5. from Store.models import Goods

6. from Store.models import GoodsType

8. from rest_framework import routers, serializers, viewsets

9. #导入框架

11. # Serializers define the API representation.

12. classUserSerializer(serializers.HyperlinkedModelSerializer):

13. """

14. 声明数据

15. """

16. classMeta: #元类

17. model = Goods #要进行接口序列化的模型

18. fields = ['goods_name', 'goods_price', 'goods_number', 'goods_description'] #序列要返回的字段

20. classGoodsTypeSerializer(serializers.HyperlinkedModelSerializer):

21. """

22. 声明查询的表和返回的字段

23. """

24. classMeta:

25. model = GoodsType

26. fields = ["name","description"]

3.2对应APP的views下:在这是通过url指向,所以更类似于视图

1. from rest_framework import viewsets

2. from Store.Serializers import *

3. # ViewSets define the view behavior.

4. #当前部分还是执行接口的查询逻辑

5. classUserViewSet(viewsets.ModelViewSet):

6. queryset = Goods.objects.all() #具体返回的数据

7. serializer_class = UserSerializer #指定过滤的类

8. classTypeViewSet(viewsets.ModelViewSet):

9. """

10. 返回具体查询的内容

11. """

12. queryset = GoodsType.objects.all()#查询所有数据

13. serializer_class = GoodsTypeSerializer#需要的数据需要从这里找

3.3 url指出接口

1. from Store.views import UserViewSet

2. from Store.views import TypeViewSet

3. from rest_framework import routers

4. router = routers.DefaultRouter() #声明一个默认的路由注册器

5. router.register(r"goods",UserViewSet) #注册写好的接口视图

6. router.register(r"goodsType",TypeViewSet) #注册写好的接口视图

9. urlpatterns = [

10. path('admin/', admin.site.urls),

11. path('Store/', include("Store.urls")),

12. path('Buyer/', include('Buyer.urls')),

13. path('ckeditor/',include('ckeditor_uploader.urls')),

14. re_path('^API', include(router.urls)), #restful 的根路由

15. re_path('^api-auth',include('rest_framework.urls')) #接口认真

16. ]

按照功能对项目进行划分:

1.创建serializers文件用来存放接口的过滤器。

4aeeef800fd4341dbfbb285f3fd5d366.png

2.在视图当中查询接口要返回的数据,并指定过滤器。(views)

be6c9e04f4d7a2071ec6c6fdff0fdff4.png

3.在路由中注册接口.

67af0e77d5c2e89c2a9fdf4808d09941.png

web端使用接口

通常要用到ajax和vue,数据通过接口返回,然后前端使用ajax进行请求,使用vue进行渲染

1.准备静态页面

2.编写视图

3f6b17f598e2bdde051b40fc5f23a8d0.png

3.路由指出

042f791e0358d95e6f63143cea973b82.png

4.静态页面ajax访问接口

1. Vue.use(VueResource);#此处的Vue是使用VueResource中的Vue. 2. var vue = new Vue( 3. { 4. el: "#goods", 5. data: { 6. goods_list: [] 7. }, 8. created:function () { 9. this.$http.get("/APIgoods/").then( 10. function (data) { 11. this.goods_list = data.data; 12. console.log(data.data) 13. }, 14. function (error) { 15. console.log(error) 16. } 17. ) 18. }, 19. methods: { 21. } 22. } 23. );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值