微信号:grzlwx

介绍:光荣之路官方资讯

图解django框架下简单接口的实现

2019-03-29 11:15 夜鸣猪

新书

速递

吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

文 |  夜鸣猪

如需源码请加吴老师微信索取:fosterwu

一、新建django项目及应用

1、打开pycharm,创建新项目books;

2、在pycharm中安装django;

3、进入Terminal,输入django-admin startproject books;

生成项目:

输入pythonmanage.py runserver,启动服务并点击网址,

可以看到django默认启动页

4、切换到manage.py的同级目录books下面;

5、创建apis应用;

运行完pythonmanage.py startapp apis命令后可以看到应用结构:

6、在./settings.py中注册刚创建的app,这里路径中的“.”代表项目books所在的路径,为整个项目的根目录,后面都用这种形势表示路径;

1)打开./apis/apps.py,可以看到该应用的Config类名为 apis.apps.ApisConfig,该名包含了其所在路径及名字:

2)在./books/setting.py注册应用"apis":

二、接口编写及请求接口

1、开始编写简单的接口,在apis/view.py中添加代码;

1)get方法接口;

fromdjango.http import HttpResponse

import json

defapi_get(request):

    '''这里request参数为客户端发送的request请求'''

    get_context = {"status":"01",

               "methodName":"get",

               "message": "用的是get方法"

               }

    get_data = json.dumps(get_context)

    if request.method == "GET":  # request.method可以获得服务器接受到request请求的方法类型

        # return HttpResponse()将该接口的数据以json格式返回

        return HttpResponse(get_data,content_type="application/json,charset=utf-8")    

    else:

        return HttpResponse("请求方法错误")

2)post方法接口;

defapi_post(request):

    if request.method == "POST":

        api_name =request.POST.get("api_name")  #获得post请求中的参数值

        # 将post请求中的参数值处理后添加到HttpResponse中返回

        post_context = {"status":"02", "methodName": "post", "message":"该接口的请求方式为%s" % api_name}

        post_data = json.dumps(post_context)

        return HttpResponse(post_data,content_type="application/json,charset=utf-8")

    else:

        return HttpResponse("请求方法错误")

2、在./books/urls.py中添加接口路径

fromdjango.contrib import admin

fromdjango.urls import path

from  apis import views

 

urlpatterns= [

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

    path('api_get/',views.api_get),

    path('api_post/',views.api_post),

]

如果出现红色波浪线,将boods应用设置为Sources Root即可解决:

3、在网页中访问get接口页面;

在Terminal中输入python manage.py runserver启动服务(在输入manage.py时可先输入'm',再按'tab'键补全):

访问该网页链接:

会报404错误,莫慌,这是正常的,在url末尾添加我们写的接口地址,.books/urls.py中存有接口地址:

访问http://127.0.0.1:8000/api_get/  ,接口请求成功:

http://127.0.0.1:8000/api_post/,由于浏览器默认用的不是post请求,则会显示请求方法错误:

4、用pythonrequests模块访问已写好的接口;

1)在根目录下创建requestsTest.py文件,请求get接口;

import requests

get_data =requests.get("http://127.0.0.1:8000/api_get")

print(get_data.json())

get请求成功

2)请求post接口;

post_content= {"api_name": "post方法"}  # post请求方法参数

post_data =requests.post("http://127.0.0.1:8000/api_post", data=post_content)

print(post_data.json())

结果报错:

这个问题是因为post请求返回的结果无法转换成json格式造成的,然后点击Terminal,可以看到django报的错:

主要看错误信息 :

You calledthis URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASHset.

这个错误意思大概就是:你提交的是post请求,但是url没有以slash("斜杠")结尾,而你又添加了APPEND_SLASH set 设置。

根据错误信息,再看我写的代码,url果然没有以"/"结尾,现在把"/"加上,重新启动服务(在Terminal中control+c后重新执行python manage.py runserver),这时候又出现了新的错误:

经过查资料,这是由于django默认post请求需要进行CSRF cookie验证,我们可以在settings中将验证屏蔽,将./books/settings.py中相关代码注释掉:

新启动服务,再次进行post请求,结果成功:

上就是利用django写简单接口的过程,这里的接口与实际接口测试中的restful接口在返回数据形式上有所不同,主要是让我们了解”客户端发送请求——服务器收到请求并处理请求——返回处理后的数据“这个过程。

如需源码请加吴老师微信索取:fosterwu

欢迎留言分享

测试人员的财富自由之路

来自测试人的困惑与思考

大龄 | 手工 | 自动化逆袭

【appium实战】appium混合页面点击方法tap的使用

实战:微信小程序+appium测试实例

实战:微信公众号+appium测试实例

使用LR编写windows sockets协议xml报文格式脚本

Python实战:file tell()返回的指针怎么就不一样?

互联网架构的演变

爬虫之我与正则的甜蜜约会

草根在测试行业如何杀出一条血路(8)

软件测试行业现状2018年度报告

2018web测试开发培训一年期周六班!

喜马拉雅app搜索并收听“光荣之路”电台
光荣之路
招聘|征稿|合作 |QQ群
735821166@qq.com
python群:457561756
性能群:415987441
招聘群:203715128
爱我,请给我好看
 
光荣之路 更多文章 内推:SHEIN | 大数据测试工程师 学习敏捷DevOps推荐书 内推:某知名电商| 自动化测试经理 独立搭建UI框架 测试也要选对行业
猜您喜欢 Unity官方认证项目及中国大陆地区报名介绍 在iTerm2中使用Zmodem实现快速传输文件 DeepMind新动向所带来的A.I.创业启示 【2016-9-22】如何把微信的聊天记录从 iPhone 里拿出来? 作为程序员,如果你已经这样该考虑辞职了~