@@ -35,21 +35,8 @@ type createResponse struct {
35
35
}
36
36
37
37
func createHandler (w http.ResponseWriter , r * http.Request ) {
38
- if r .Method != http .MethodPost {
39
- w .WriteHeader (400 )
40
- return
41
- }
42
38
var request createRequest
43
- data , err := ioutil .ReadAll (r .Body )
44
- if err != nil {
45
- log .WithError (err ).Error ("io read from frontend fail" )
46
- w .WriteHeader (500 )
47
- return
48
- }
49
- err = json .Unmarshal (data , & request )
50
- if err != nil {
51
- log .WithError (err ).Error ("json unmarshal fail" )
52
- w .WriteHeader (400 )
39
+ if ok := decode (w , r , & request ); ! ok {
53
40
return
54
41
}
55
42
task := & Task {
@@ -61,49 +48,30 @@ func createHandler(w http.ResponseWriter, r *http.Request) {
61
48
Content : request .Content ,
62
49
CreatTime : time .Now ().Unix (),
63
50
}
64
- err = createTask (task )
51
+ err : = createTask (task )
65
52
if err != nil {
66
53
log .WithError (err ).Error ("create task fail" )
67
54
w .WriteHeader (500 )
68
55
return
69
56
}
70
57
response := createResponse {ID : task .ID }
71
- respData , err := json .Marshal (response )
72
- if err != nil {
73
- log .WithError (err ).Error ("json marshal fail" )
74
- w .WriteHeader (500 )
75
- return
76
- }
77
- w .Write (respData )
58
+ write (w , response )
78
59
}
79
60
80
61
type deleteRequest struct {
81
62
ID string `json:"id"`
82
63
}
83
64
84
65
func deleteHandler (w http.ResponseWriter , r * http.Request ) {
85
- if r .Method != http .MethodPost {
86
- w .WriteHeader (400 )
87
- return
88
- }
89
66
var request deleteRequest
90
- data , err := ioutil .ReadAll (r .Body )
91
- if err != nil {
92
- log .WithError (err ).Error ("io read from frontend fail" )
93
- w .WriteHeader (500 )
94
- return
95
- }
96
- err = json .Unmarshal (data , & request )
97
- if err != nil {
98
- log .WithError (err ).Error ("json unmarshal fail" )
99
- w .WriteHeader (400 )
67
+ if ok := decode (w , r , & request ); ! ok {
100
68
return
101
69
}
102
70
if request .ID == "" {
103
71
w .WriteHeader (400 )
104
72
return
105
73
}
106
- err = deleteTask (request .ID )
74
+ err : = deleteTask (request .ID )
107
75
if err != nil {
108
76
log .WithError (err ).Error ("delete task fail" )
109
77
w .WriteHeader (500 )
@@ -128,21 +96,8 @@ type queryResponse struct {
128
96
}
129
97
130
98
func queryHandler (w http.ResponseWriter , r * http.Request ) {
131
- if r .Method != http .MethodPost {
132
- w .WriteHeader (400 )
133
- return
134
- }
135
99
var request queryRequest
136
- data , err := ioutil .ReadAll (r .Body )
137
- if err != nil {
138
- log .WithError (err ).Error ("io read from frontend fail" )
139
- w .WriteHeader (500 )
140
- return
141
- }
142
- err = json .Unmarshal (data , & request )
143
- if err != nil {
144
- log .WithError (err ).Error ("json unmarshal fail" )
145
- w .WriteHeader (400 )
100
+ if ok := decode (w , r , & request ); ! ok {
146
101
return
147
102
}
148
103
if request .ID == "" {
@@ -169,7 +124,31 @@ func queryHandler(w http.ResponseWriter, r *http.Request) {
169
124
Content : task .Content ,
170
125
CreatTime : task .CreatTime ,
171
126
}
172
- respData , err := json .Marshal (response )
127
+ write (w , response )
128
+ }
129
+
130
+ func decode (w http.ResponseWriter , r * http.Request , obj interface {}) bool {
131
+ if r .Method != http .MethodPost {
132
+ w .WriteHeader (400 )
133
+ return false
134
+ }
135
+ data , err := ioutil .ReadAll (r .Body )
136
+ if err != nil {
137
+ log .WithError (err ).Error ("io read from frontend fail" )
138
+ w .WriteHeader (500 )
139
+ return false
140
+ }
141
+ err = json .Unmarshal (data , obj )
142
+ if err != nil {
143
+ log .WithError (err ).Error ("json unmarshal fail" )
144
+ w .WriteHeader (400 )
145
+ return false
146
+ }
147
+ return true
148
+ }
149
+
150
+ func write (w http.ResponseWriter , obj interface {}) {
151
+ respData , err := json .Marshal (obj )
173
152
if err != nil {
174
153
log .WithError (err ).Error ("json marshal fail" )
175
154
w .WriteHeader (500 )
0 commit comments