@@ -13,7 +13,7 @@ class Something < Grape::Entity
13
13
14
14
class EnumValues < Grape ::Entity
15
15
expose :gender , documentation : { type : 'string' , desc : 'Content of something.' , values : %w( Male Female ) }
16
- expose :number , documentation : { type : 'integer' , desc : 'Content of something.' , values : proc { [ 1 , 2 ] } }
16
+ expose :number , documentation : { type : 'integer' , desc : 'Content of something.' , values : [ 1 , 2 ] }
17
17
end
18
18
19
19
class ComposedOf < Grape ::Entity
@@ -76,6 +76,12 @@ class ThingWithRoot < Grape::Entity
76
76
root 'things' , 'thing'
77
77
expose :text , documentation : { type : 'string' , desc : 'Content of something.' }
78
78
end
79
+
80
+ class ApiError < Grape ::Entity
81
+ expose :code , documentation : { type : Integer , desc : 'status code' }
82
+ expose :message , documentation : { type : String , desc : 'error message' }
83
+ end
84
+
79
85
end
80
86
81
87
end
@@ -84,62 +90,74 @@ def app
84
90
Class . new ( Grape ::API ) do
85
91
format :json
86
92
87
- # # Something stuff
88
- # desc 'This gets Somethings.', entity: Entities::Something, params: Entities::Something.documentation
89
- # get '/something' do
90
- # something = OpenStruct.new text: 'something'
91
- # present something, with: Entities::Something
92
- # end
93
- #
94
- # desc 'This gets Something.', entity: Entities::Something, params: Entities::Something.documentation
95
- # params do
96
- # requires :id, type: Integer, desc: 'Identity'
97
- # end
98
- # get '/something/:id' do
99
- # something = OpenStruct.new text: 'something'
100
- # present something, with: Entities::Something
101
- # end
102
- #
103
- # desc 'This creates Something.', entity: Entities::Something, params: Entities::Something.documentation
104
- # params do
105
- # requires :text, type: String, documentation: { type: 'string', desc: 'Content of something.' }
106
- # requires :links, type: Array, documentation: { type: 'link', is_array: true }
107
- # end
108
- # post '/something' do
109
- # something = OpenStruct.new text: 'something'
110
- # present something, with: Entities::Something
111
- # end
112
- #
113
- # desc 'This updates Something.', entity: Entities::Something, params: Entities::Something.documentation
114
- # params do
115
- # requires :id, type: Integer
116
- # optional :text, type: String, documentation: { type: 'string', desc: 'Content of something.' }
117
- # optional :links, type: Array, documentation: { type: 'link', is_array: true }
118
- # end
119
- # put '/something/:id' do
120
- # something = OpenStruct.new text: 'something'
121
- # present something, with: Entities::Something
122
- # end
123
- #
124
- # desc 'This deletes something.', entity: Entities::Something, params: Entities::Something.documentation
125
- # params do
126
- # requires :id, type: Integer
127
- # end
128
- # delete '/something/:id' do
129
- # something = OpenStruct.new text: 'something'
130
- # present something, with: Entities::Something
131
- # end
93
+ # Something stuff
94
+ desc 'This gets Somethings.' , entity : Entities ::Something , params : Entities ::Something . documentation
95
+ get '/something' do
96
+ something = OpenStruct . new text : 'something'
97
+ present something , with : Entities ::Something
98
+ end
99
+
100
+ desc 'This gets Something.' , entity : Entities ::Something , params : Entities ::Something . documentation
101
+ params do
102
+ requires :id , type : Integer , desc : 'Identity'
103
+ end
104
+ get '/something/:id' do
105
+ something = OpenStruct . new text : 'something'
106
+ present something , with : Entities ::Something
107
+ end
108
+
109
+ desc 'This creates Something.' , entity : Entities ::Something , params : Entities ::Something . documentation
110
+ params do
111
+ requires :text , type : String , documentation : { type : 'string' , desc : 'Content of something.' }
112
+ requires :links , type : Array , documentation : { type : 'link' , is_array : true }
113
+ end
114
+ post '/something' do
115
+ something = OpenStruct . new text : 'something'
116
+ present something , with : Entities ::Something
117
+ end
118
+
119
+ desc 'This updates Something.' , entity : Entities ::Something , params : Entities ::Something . documentation
120
+ params do
121
+ requires :id , type : Integer
122
+ optional :text , type : String , documentation : { type : 'string' , desc : 'Content of something.' }
123
+ optional :links , type : Array , documentation : { type : 'link' , is_array : true }
124
+ end
125
+ put '/something/:id' do
126
+ something = OpenStruct . new text : 'something'
127
+ present something , with : Entities ::Something
128
+ end
129
+
130
+ desc 'This deletes something.' , entity : Entities ::Something , params : Entities ::Something . documentation
131
+ params do
132
+ requires :id , type : Integer
133
+ end
134
+ delete '/something/:id' do
135
+ something = OpenStruct . new text : 'something'
136
+ present something , with : Entities ::Something
137
+ end
132
138
133
139
# Thing stuff
134
140
desc 'This gets Things.' do
135
141
params Entities ::Something . documentation
136
- http_codes [ { code : 401 , message : 'Unauthorized' } ]
142
+ http_codes [ { code : 401 , message : 'Unauthorized' , model : Entities :: ApiError } ]
137
143
end
138
144
get '/thing' do
139
145
something = OpenStruct . new text : 'something'
140
146
present something , with : Entities ::Something
141
147
end
142
148
149
+ desc 'This gets Things.' do
150
+ params Entities ::Something . documentation
151
+ http_codes [
152
+ { code : 200 , message : 'get Horses' , model : Entities ::EnumValues } ,
153
+ { code : 401 , message : 'HorsesOutError' , model : Entities ::ApiError }
154
+ ]
155
+ end
156
+ get '/thing2' do
157
+ something = OpenStruct . new text : 'something'
158
+ present something , with : Entities ::Something
159
+ end
160
+
143
161
desc 'This gets Thing.' do
144
162
params Entities ::Something . documentation
145
163
http_codes [ { code : 200 , message : 'getting a single thing' } , { code : 401 , message : 'Unauthorized' } ]
0 commit comments