转载请注明出处:https://blog.csdn.net/HHTNAN/
首先我们来说一说,post与get的区别
POST和GET差异:
POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。
POST和GET都可以与服务器完成查,改,增,删操作。
GET提交,请求的数据会附在URL之后,以?分割URL和传输数据,多个参数用&连接;
POST提交,把提交的数据放置在HTTP包的包体中;因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。
HTTP没有要求,如果Method是POST数据就要放在BODY中。也没有要求,如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。
HTTP协议对GET和POST都没有对长度的限制
HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL长度上的限制,有两方面的原因造成:
浏览器。据说早期的浏览器会对URL长度做限制。据说IE对URL长度会限制在2048个字符内(流传很广,而且无数同事都表示认同)。但我自己试了一下,我构造了90K的URL通过IE9访问live.com,是正常的。网上的东西,哪怕是Wikipedia上的,也不能信。
服务器。URL长了,对服务器处理也是一种负担。原本一个会话就没有多少数据,现在如果有人恶意地构造几个几M大小的URL,并不停地访问你的服务器。服务器的最大并发数显然会下降。另一种攻击方式是,把告诉服务器Content-Length是一个很大的数,然后只给服务器发一点儿数据,嘿嘿,服务器你就傻等着去吧。哪怕你有超时设置,这种故意的次次访问超时也能让服务器吃不了兜着走。有鉴于此,多数服务器出于安全啦、稳定啦方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。
首先在view中定义一个post请求,
django 2.0.5
Python 3.6.5
views中的请求函数
def apis(request):
print("hello input")
# p={"word":"data"}
#查看客户端发来的请求,前端的数据
print("request.body={}".format(request.body))
#返回给客户端的数据
result="success"
if request.method=="POST":
print(request.POST)
return JsonResponse({"status": 200, "msg": "OK","data": result})
由于是post的请求,所以其请求体在request.body中,即客户端发过来的请求,即前端发过来的参数。一般都会对参数进行处理,之后返回result再次传输给前端,这里我没有进行处理,直接返回给以一个result.
之后配置url
最后新建一个client(客户端)来测试接口是否成功。这里是使用django 自带的tests.py 写了一个函数。
from django.test import TestCase
# Create your tests here.
import requests,json
def dodo():
req={34:1}
url='http://127.0.0.1:8000/apis'
#params 为发送给服务器的请求
params = {
"name":"前端输入参数"
}
#请求头,是浏览器正常的就行
headers = {"User-agent":"none/ofyourbusiness","Spam":"Eggs"}
#发送请求,返回新数据
data = requests.post(url,data=params,headers=headers)
print(data)
print(data.text)
dodo()
运行结果如上,表示成功。
我是做算法的,可能对于后端来说这个很简单,但是对于我这个算法来说弄了小半天。终于解决了,记录一下。