介绍
随着互联网的发展,越来越多的数据需要被通过API接口进行交互使用。Django是一个高效的Python Web框架,功能强大,而Rest Framework则是为Django提供API接口的插件,可以轻松地构建API接口,返回JSON数据。本文将介绍使用Django和Rest Framework构建API接口并提供API接口文档。
环境准备
要使用Django和Rest Framework构建API,需要先安装Python,并安装Django和Rest Framework模块。可以通过以下代码进行安装:
pip install django
pip install djangorestframework
创建Django项目
在安装好Django和Rest Framework之后,就可以创建Django项目。
首先,使用以下代码创建一个Django项目:
django-admin startproject myproject
这将创建一个名为myproject的Django项目,其中包含一个名为manage.py的文件和一个名为myproject的文件夹。
接下来,我们将创建一个Django应用程序。 运行以下代码:
cd myproject
python manage.py startapp myapp
这将在myproject文件夹中创建一个名为myapp的Django应用程序。我们可以在myapp文件夹中编写我们的API接口代码。
创建API接口
在myapp文件夹中创建一个新的Python文件,名为views.py。在文件中编写以下代码:
from rest_framework.decorators import api_view
from rest_framework.response import Response
@api_view(['GET'])
def my_api(request):
data = {'hello': 'world'}
return Response(data)
上述代码定义了一个名为my_api的API接口,它使用@api_view装饰器和GET请求方法装饰。函数中定义了一个字典,名为data,包含一个键值对,名为hello和world。该函数返回使用Response函数包装的data字典,即返回JSON数据。
配置URL路由
接下来,我们需要配置URL路由,以便我们的API接口能够通过URL进行访问。
在myapp文件夹中创建一个名为urls.py的Python文件,编写以下代码:
from django.urls import path
from . import views
urlpatterns = [
path('my_api/', views.my_api, name='my_api'),
]
上述代码定义了一个包含一个名为my_api的URL路由,它指向我们之前定义的名为my_api的API接口。
现在,我们需要将myapp应用程序的URL路由添加到myproject文件夹中的urls.py文件中,如下所示:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('myapp.urls')),
]
上述代码定义了一个包含两个URL路由的列表,一个指向Django的管理员页面,一个指向我们的API接口(my_api)。 "api/"将被添加到url以使之与我们的API接口区别开来。
生成API接口文档
Rest Framework提供了生成API接口文档的工具,Swagger及其UI,我们使用以下代码安装它们:
pip install django-rest-swagger
在myproject文件夹中的settings.py文件中,INSTALLED_APPS中添加以下代码:
INSTALLED_APPS = [
#...
'rest_framework_swagger',
]
接下来,将以下代码添加到myapp文件夹的urls.py文件的urlpatterns中:
from rest_framework_swagger.views import get_swagger_view
schema_view = get_swagger_view(title='My API')
urlpatterns = [
#...
path('docs/', schema_view),
]
现在我们可以运行Django,并通过访问"http://localhost:8000/docs/"来查看我们的API接口文档。
整合前端代码
当你有了以上的API接口,就可以将它和前端代码整合,从而使前端页面可以方便的调用API接口。
例如,根据temp变量不同,返回不同的JSON数据。前端代码可以这样写:
let temp = 0.6
if (temp > 0.5) {
$.getJSON("/api/my_api/", function(data) {
alert(data.hello)
});
} else {
$.getJSON("/api/my_api2/", function(data) {
alert(data.hello2)
});
}
当temp大于0.5时,调用my_api接口并弹出"data.hello"的值;反之,则调用my_api2接口并弹出"data.hello2"的值。
这样,我们就可以通过API接口方便地进行数据交互了。