Skip to content

Commit ba9a089

Browse files
committed
封装接口的返回
1 parent 1e7829d commit ba9a089

File tree

4 files changed

+123
-88
lines changed

4 files changed

+123
-88
lines changed

api/common.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from django.http import JsonResponse
2+
3+
4+
def ApiResponse(status=None, message=None, data=[]):
5+
"""
6+
实现Api的固定格式的返回
7+
:param status:
8+
:param message:
9+
:param data:
10+
:return:
11+
"""
12+
if status is None:
13+
status__ = 10000
14+
else:
15+
status__ = 10000 + int(status)
16+
17+
if message is None:
18+
message = "successful"
19+
20+
response_dict = {
21+
"status": status__,
22+
"message": message,
23+
"data": data
24+
}
25+
return JsonResponse(response_dict)

api/models.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
from django.db import models
22

3-
# Create your models here.
3+
4+
class User(models.Model):
5+
name = models.CharField(max_length=100)
6+
age = models.IntegerField()
7+
8+
def __str__(self):
9+
return self.name

api/urls.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
path('login', views.post_login),
1212
path('add_user', views.post_add_user),
1313
path('header', views.post_header),
14-
path('phone/<int:pid>/', views.phone),
14+
15+
# RESTful 风格接口
16+
path('user/<int:uid>/', views.user),
1517

1618
# session 记录用户状态
1719
path('user_login', views.user_login),

api/views.py

+88-86
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
import os
22
import json
33
from random import randint
4-
from django.http import JsonResponse, HttpResponseRedirect
4+
from django.forms.models import model_to_dict
55
from django.contrib import auth
66
from django.contrib.auth.decorators import login_required
77
from guest2.settings import BASE_DIR
8+
from api.models import User
9+
from api.common import ApiResponse
810

911

1012
def hello_world(request):
1113
"""
1214
最简单的get请求,返回json格式返回
1315
"""
14-
return JsonResponse({"code": 10200, "message": "Welcome to API testing"})
16+
return ApiResponse(200, "Welcome to API testing")
1517

1618

1719
def user(request, username):
1820
"""
1921
通过 URI 传参
2022
"""
2123
msg = "hello, {}".format(username)
22-
return JsonResponse({"code": 10200, "message": msg})
24+
return ApiResponse(200, msg)
2325

2426

2527
def get_user_info(request, uid):
@@ -29,12 +31,11 @@ def get_user_info(request, uid):
2931
if request.method == "GET":
3032
user_info = {"id": 1, "name": "tom", "age": 22}
3133
if uid != 1:
32-
response = {"code": 10101, "message": "user id null"}
34+
return ApiResponse(101, "user id null")
3335
else:
34-
response = {"code": 10200, "message": "success", "data": user_info}
35-
return JsonResponse(response)
36+
return ApiResponse(200, data=user_info)
3637
else:
37-
return JsonResponse({"code": 10101, "message": "request method error"})
38+
return ApiResponse(101, "request method error")
3839

3940

4041
def search(request):
@@ -47,9 +48,9 @@ def search(request):
4748
data_list = ["selenium教程", "seleniumhq.org", "selenium环境安装"]
4849
else:
4950
data_list = []
50-
return JsonResponse({"code": 10200, "message": "success", "data": data_list})
51+
return ApiResponse(200, data=data_list)
5152
else:
52-
return JsonResponse({"code": 10101, "message": "request method error"})
53+
return ApiResponse(101, "request method error")
5354

5455

5556
def post_login(request):
@@ -62,19 +63,18 @@ def post_login(request):
6263
password = request.POST('password')
6364

6465
if username is None or password is None:
65-
response = {"code": 10102, "message": "username or passwrord is None"}
66+
return ApiResponse(102, "username or passwrord is None")
6667

6768
elif username == "" or password == "":
68-
response = {"code": 10203, "message": "username or passwrord is null"}
69+
return ApiResponse(103, "username or passwrord is null")
6970

7071
elif username == "admin" and password == "a123456":
71-
response = {"code": 10200, "message": "login success"}
72+
return ApiResponse(200, "login success")
7273

7374
else:
74-
response = {"code": 10104, "message": "username or password error"}
75-
return JsonResponse(response)
75+
return ApiResponse(104, "username or password error")
7676
else:
77-
return JsonResponse({"code": 10101, "message": "request method error"})
77+
return ApiResponse(101, "request method error")
7878

7979

8080
def post_add_user(request):
@@ -86,25 +86,24 @@ def post_add_user(request):
8686
try:
8787
data = json.loads(request.body)
8888
except json.decoder.JSONDecodeError:
89-
return JsonResponse({"code": 10105, "message": "format error"})
89+
return ApiResponse(105, "format error")
9090

9191
try:
9292
name = data["name"]
9393
age = data["age"]
9494
height = data["height"]
9595
except KeyError:
96-
response = {"code": 10102, "message": "key null"}
96+
return ApiResponse(102, "key null")
9797
else:
9898
if name == "":
99-
response = {"code": 10103, "message": "name null"}
99+
return ApiResponse(103, "name null")
100100
elif name == "tom":
101-
response = {"code": 10104, "message": "name exist"}
101+
return ApiResponse(104, "name exist")
102102
else:
103103
data = {"name": name, "age": age, "height": height}
104-
response = {"code": 10200, "message": "add success", "data": data}
105-
return JsonResponse(response)
104+
return ApiResponse(200, "add successful", data)
106105
else:
107-
return JsonResponse({"code": 10101, "message": "request method error"})
106+
return ApiResponse(101, "request method error")
108107

109108

110109
def post_header(request):
@@ -115,67 +114,70 @@ def post_header(request):
115114
if request.method == 'POST':
116115
token = request.headers.get("token")
117116
ct = request.headers.get("Content-Type")
118-
response = {"code": 10200, "message": "header ok!",
119-
"data": {"token": token, "Content-Type": ct}}
120-
return JsonResponse(response)
117+
return ApiResponse(200, "header ok!", {"token": token, "Content-Type": ct})
121118
else:
122-
return JsonResponse({"code": 10101, "message": "request method error"})
119+
return ApiResponse(101, "request method error")
123120

124121

125-
def phone(request, pid):
122+
def user(request, uid):
126123
"""
127-
一个URL, 根据不同的方法做不同的处理
124+
RESTful 风格的接口实现
125+
实现用户的查询、添加、更新和删除
126+
/event/1/ = GET
127+
/event/2/ = POST
128+
/event/1/ = PUT
129+
/event/1/ = DELETE
130+
:param request:
131+
:param uid:
132+
:return:
128133
"""
129-
# 获取数据
130-
if request.method == 'GET':
131-
if pid == 1:
132-
phone_info = {
133-
"id": pid,
134-
"name": "小米手机",
135-
"price": 1999
136-
}
137-
response = {"code": 10201, "message": "get success", "data": phone_info}
134+
if request.method == "GET":
135+
try:
136+
user = User.objects.get(id=uid)
137+
except User.DoesNotExist:
138+
return ApiResponse(101, message="用户信息不存在")
138139
else:
139-
response = {"code": 10101, "message": "The phone id is empty"}
140-
return JsonResponse(response)
140+
user_info = model_to_dict(user)
141+
return ApiResponse(200, data=user_info)
141142

142-
# 添加数据
143143
elif request.method == "POST":
144-
if pid != 1:
145-
name = request.POST.get('name')
146-
price = request.POST.get('price')
147-
phone_info = {
148-
"id": pid,
149-
"name": name,
150-
"price": price
151-
}
152-
response = {"code": 10202, "message": "add success", "data": phone_info}
144+
post = json.loads(request.body)
145+
name = post.get("name")
146+
age = post.get("age")
147+
try:
148+
User.objects.get(id=uid)
149+
except User.DoesNotExist:
150+
user = User.objects.create(id=uid, name=name, age=age)
151+
user_info = model_to_dict(user)
152+
return ApiResponse(200, "add success", user_info)
153153
else:
154-
response = {"code": 10102, "message": "The pid already exists"}
155-
return JsonResponse(response)
154+
return ApiResponse(102, "用户id已存在")
156155

157-
# 更新数据
158156
elif request.method == "PUT":
159-
if pid == 1:
160-
name = request.GET.get('name')
161-
price = request.GET.get('price')
162-
phone_info = {
163-
"id": pid,
164-
"name": name,
165-
"price": price
166-
}
167-
response = {"code": 10203, "message": "update success", "data": phone_info}
157+
put = json.loads(request.body)
158+
name = put.get("name")
159+
age = put.get("age")
160+
try:
161+
user = User.objects.get(id=uid)
162+
except User.DoesNotExist:
163+
return ApiResponse(101, "用户信息不存在")
168164
else:
169-
response = {"code": 10103, "message": "The updated phone id is empty"}
170-
return JsonResponse(response)
165+
user.name = name
166+
user.age = age
167+
user.save()
168+
user_info = model_to_dict(user)
169+
return ApiResponse(200, "update success", user_info)
171170

172-
# 删除数据
173171
elif request.method == "DELETE":
174-
if pid == 1:
175-
response = {"code": 10204, "message": "delete success"}
172+
try:
173+
user = User.objects.get(id=uid)
174+
except User.DoesNotExist:
175+
return ApiResponse(101, "用户信息不存在")
176176
else:
177-
response = {"code": 10104, "message": "The deleted phone id is empty"}
178-
return JsonResponse(response)
177+
user.delete()
178+
return ApiResponse(200, "delete success")
179+
else:
180+
return ApiResponse(101, "request method error")
179181

180182

181183
def user_login(request):
@@ -186,18 +188,18 @@ def user_login(request):
186188
login_username = request.POST.get("username")
187189
login_password = request.POST.get("password")
188190
if login_username == '' or login_password == '':
189-
return JsonResponse({"code": 10201, "message":"username or password null"})
191+
return ApiResponse(102, "username or password null")
190192
else:
191193
user = auth.authenticate(username=login_username, password=login_password)
192194
if user is not None:
193195
auth.login(request, user)
194196
# 将 session 信息记录到浏览器
195197
request.session['user'] = login_username
196-
return JsonResponse({"code": 10200, "message": "login success"})
198+
return ApiResponse(200, "login success")
197199
else:
198-
return JsonResponse({"code": 10202, "message": "username or password error"})
200+
return ApiResponse(103, "username or password error")
199201
else:
200-
return JsonResponse({"code": 10100, "message": "Request method error"})
202+
return ApiResponse(101, "request method error")
201203

202204

203205
@login_required
@@ -207,9 +209,9 @@ def user_login_data(request):
207209
"""
208210
username = request.session.get('user', '') # 读取浏览器 session
209211
if username == "":
210-
return JsonResponse({"code": 10200, "message": 'hello, stranger'})
212+
return ApiResponse(200, 'hello, stranger')
211213
else:
212-
return JsonResponse({"code": 10200, "message": 'hello, {}'.format(username)})
214+
return ApiResponse(200, 'hello, {}'.format(username))
213215

214216

215217
def get_activity(request):
@@ -219,9 +221,9 @@ def get_activity(request):
219221
"""
220222
if request.method == "GET":
221223
activity_info = {"id": 1, "name": "618抽奖活动"}
222-
return JsonResponse({"code": 10200, "message": "success", "data": activity_info})
224+
return ApiResponse(200, data=activity_info)
223225
else:
224-
return JsonResponse({"code": 10101, "message": "request method error"})
226+
return ApiResponse(101, "request method error")
225227

226228

227229
def get_user(request):
@@ -230,9 +232,9 @@ def get_user(request):
230232
"""
231233
if request.method == "GET":
232234
user_info = {"id": 1, "name": "张三"}
233-
return JsonResponse({"code": 10200, "message": "success", "data": user_info})
235+
return ApiResponse(200, data=user_info)
234236
else:
235-
return JsonResponse({"code": 10101, "message": "request method error"})
237+
return ApiResponse(101, "request method error")
236238

237239

238240
def get_lucky_number(request):
@@ -244,22 +246,22 @@ def get_lucky_number(request):
244246
user_id = request.form.get('uid')
245247

246248
if activity_id is None or user_id is None:
247-
return JsonResponse({"code": 10102, "message": "username or password is None"})
249+
return ApiResponse(102, "username or password is None")
248250

249251
elif activity_id == "" or user_id == "":
250-
return JsonResponse({"code": 10103, "message": "username or password is null"})
252+
return ApiResponse(10103, "username or password is null")
251253

252254
if int(activity_id) != 1:
253-
return JsonResponse({"code": 10104, "message": "activity id exist"})
255+
return ApiResponse(104, "activity id exist")
254256

255257
if int(user_id) != 1:
256-
return JsonResponse({"code": 10105, "message": "user id not exist"})
258+
return ApiResponse(105, "user id not exist")
257259

258260
number = randint(10000, 99999)
259-
return JsonResponse({"code": 10200, "message": "Lucky draw number", "data": number})
261+
return ApiResponse(200, "Lucky draw number", number)
260262

261263
else:
262-
return JsonResponse({"code": 10101, "message": "request method error"})
264+
return ApiResponse(101, "request method error")
263265

264266

265267
def upload_file(request):
@@ -269,9 +271,9 @@ def upload_file(request):
269271
if request.method == "POST":
270272
my_file = request.FILES.get("file", None)
271273
if not my_file:
272-
return JsonResponse({"code": 10101, "message": "no files for upload!"})
274+
return ApiResponse(101, "no files for upload!")
273275
destination = open(os.path.join(BASE_DIR, "api/upload", my_file.name), 'wb+')
274276
for chunk in my_file.chunks():
275277
destination.write(chunk)
276278
destination.close()
277-
return JsonResponse({"code": 10200, "message": "upload success!"})
279+
return ApiResponse(200, "upload success!")

0 commit comments

Comments
 (0)