python:使用Djangorestframework编写post和get接口

1、安装django

pip install django

2、新建一个django工程

python manage.py startproject cainiao_monitor_api

3、新建一个app

python manage.py startapp monitor

4、安装DRF

pip install djangorestframework

5、编写视图函数

views.py

from rest_framework.views import APIView
import json
import cx_Oracle
from django.http import HttpResponse
# Create your views here.


class MonitorMsg(APIView):
    # 此处方法名只能为post或者get等名称,这个名称就是接口类型
    def post(self, request):
        """
        查询某一天的数据;
        此方法请求类型为post,根据urls.py中的配置,该接口地址为:/monitorMsg,
        传入参数方式以下三种都可以:json方式或者form-data或者x-www-form-urlencoded,
        request.data['datetime']方式都可以解析到入参的值
        :param request:
        :return: 返回CAINIAO_MONITOR_MSG表中所有的异常信息
        """
        # 如果前台通过form-data格式传入参数,则使用request.POST['key']此方法获取参数的值
        # datetime = request.POST['datetime']
        # 【推荐】如果前台通过json方式或者form-data或者x-www-form-urlencoded传入参数,则使用request.data['key']方法均可获取对应的value
        datetime = request.data['datetime']
        print(request.data)
        sql = "select * from CAINIAO_MONITOR_MSG t WHERE to_char(t.CREATE_TIME,'yyyy-MM-dd') like '%s' " % datetime
        # 连接数据库
        conn = cx_Oracle.connect('name', 'pwd', '10.*.*.*:1521/sid')
        # 创建游标
        cursor = conn.cursor()
        # 执行sql语句
        cursor.execute(sql)
        # 提交数据
        conn.commit()
        # 获取查询数据类型为list
        data = cursor.fetchall()
        # 关闭游标
        cursor.close()
        # 断开数据库连接
        conn.close()
        # 新建空列表用来放数据
        msg_list = []
        # 遍历查询到的数据
        for i in data:
            # 创建空的字典,存放对应的字段信息
            msg_dict = {}
            # 将查询到的数据作为value对应到字典相应key
            msg_dict['id'] = i[0]
            msg_dict['scenario_code'] = i[1]
            msg_dict['msg'] = i[2]
            msg_dict['status'] = i[4]
            # 将遍历的数据存放到list中
            msg_list.append(msg_dict)
        # 定义最终的返回数据样式
        res_data = {'count': len(msg_list), 'data': msg_list}
        # 将res_data序列化为json对象,并返回
        return HttpResponse(json.dumps(res_data), content_type="application/json")

6、编写路由

urls.py

from django.contrib import admin
from django.urls import path
from monitor.views import MonitorMsg

urlpatterns = [
    path('admin/', admin.site.urls),
    # 接口的url:http://127.0.0.1:8000/monitorMsg
    path('monitorMsg', MonitorMsg.as_view()),
]

7、启动服务

python manage.py runserver

8、访问测试

 

原文地址:https://www.cnblogs.com/gcgc/p/11541628.html