在Pyhon中使用:网络编程 & 接口开发

1. 网络编程

 1 import json
 2 from urllib.request import urlopen
 3 from urllib.parse import urlencode
 4 import requests
 5 
 6 #get请求
 7 url = "http://127.0.0.1:8888/get?name=cddd"
 8 req = urlopen(url)
 9 result = json.loads(req.read().decode())
10 print(result)
11 
12 #post请求
13 url = "http://127.0.0.1:8888/get"
14 data = {"name":"post"}
15 #name=xxx
16 req = urlopen(url,urlencode(data).encode())
17 print(req.read().decode())
18 
19 #get
20 url = "http://127.0.0.1:8888/get"
21 data = {"name":"呵呵"}
22 req = requests.get(url=url,params=data)
23 
24 #post
25 url = "http://127.0.0.1:8888/get"
26 data = {"name":"呵呵呵呵"}
27 req = requests.post(url,data=data,params={"xx":"xx"})
28 # params=xx,参数是传在url后面的
29 # data=xxx,参数是传在body里面的form-data的
30 
31 #header、cookie
32 url = "http://127.0.0.1:8888/header"
33 # req = requests.post(url,headers={"name":"xiaoming"},cookies={"time":"123456","time2":"666666"})
34 req = requests.post(url,headers={"name":"xiaoming","cookie":"time=123456;time2=666666"})
35 
36 #入参是json的
37 url = "http://127.0.0.1:8888/json"
38 data = {"age":36,"name":"呵呵呵呵","sex":1111}
39 req = requests.post(url,json=data)
40 
41 #文件上传
42 url = "http://127.0.0.1:8888/file"
43 files = {"file":open("/Users/nhy/Desktop/linux.emmx",'rb')}
44 req = requests.post(url,files=files)
45 
46 #文件下载
47 url = "https://q4.qlogo.cn/g?b=qq&nk=1357396742&s=140"
48 req = requests.get(url)
49 with open("lby.jpg",'wb') as fw:
50     fw.write(req.content)
51 
52 #返回值类型转换
53 print(req.status_code) #返回的http状态码
54 print(req.json() ) #直接把返回的数据转成字典
55 print(req.text) #返回的是字符串
56 print(req.content) #返回的是bytes类型的
57 print(req.cookies) #返回的cookie
58 print(req.headers) #响应头

2. 接口开发

 1 import flask
 2 import json
 3 import CS2
 4 server = flask.Flask(__name__)
 5 
 6 
 7 @server.route('/api/user',methods=['post','get'])
 8 def user_info():
 9     d = {"id":3,"username":"CHJ"}
10     return json.dumps(d,ensure_ascii=False)
11 
12 #get
13 @server.route('/get',methods=['get'])
14 def user2():
15     name = flask.request.values.get("name")
16     data  = {"name":name}
17     return json.dumps(data,ensure_ascii=False)
18 
19 #header,cookie
20 @server.route('/header',methods=['get','post'])
21 #这个接口是为了说明怎么获取cooke,获取header的
22 def user3():
23     name = flask.request.headers.get("name") #从header里面获取数据
24     time = flask.request.cookies.get("time") #cookie获取数据
25     data  = {"name":name,'time':time}
26     return json.dumps(data)
27 
28 #json
29 @server.route('/json',methods=['post'])
30 def user4():
31     if flask.request.is_json:
32         age = flask.request.json.get("age")
33         name = flask.request.json.get("name")
34         sex = flask.request.json.get("sex")
35         data = {"age":age,"sex":sex,"name":name}
36     else:
37         data = {"code":-1,"msg":"入参不是json"}
38 
39     return json.dumps(data,ensure_ascii=False)
40 
41 #文件上传
42 @server.route('/file',methods=['post'])
43 def user5():
44     file = flask.request.files.get("file")
45     file.save(file.filename)
46     return json.dumps({"code":0,"msg":"上传成功"},ensure_ascii=False)
47 
48 #数据库查询
49 #user、stu_hua
50 #table_name=user
51 #/table_data?table_name=
52 @server.route('/table_data')
53 def table_data():
54     table_names = ['user','CHJ_UserName']
55     table_name = flask.request.values.get('table_name') #table_name=stu+salt
56     # table_name = flask.request.values.get('sign') #sdgsdsdgsgds
57     if table_name:
58         if table_name in table_names:
59             sql = 'select * from %s;' % table_name
60             result = CS2.execute_sql(sql)
61             data = {"code":0,"msg":"成功","data":result}
62             return json.dumps(data, ensure_ascii=False)
63         else:
64             return json.dumps({"code":-1,"msg":"没有查询该表的权限"},ensure_ascii=False)
65 
66     return json.dumps({"code":-1,"msg":"请传入table_name"},ensure_ascii=False)
原文地址:https://www.cnblogs.com/huajie-chj/p/14414600.html