|
5 | 5 | from openapi_core.casting.schemas.exceptions import CastError
|
6 | 6 | from openapi_core.deserializing.exceptions import DeserializeError
|
7 | 7 | from openapi_core.exceptions import (
|
8 |
| - MissingRequiredParameter, MissingParameter, MissingRequestBody, |
| 8 | + MissingRequiredParameter, MissingParameter, |
| 9 | + MissingRequiredRequestBody, MissingRequestBody, |
9 | 10 | )
|
10 | 11 | from openapi_core.security.exceptions import SecurityError
|
11 | 12 | from openapi_core.schema.parameters import get_aslist, get_explode
|
@@ -175,15 +176,18 @@ def _get_body(self, request, operation):
|
175 | 176 | return None, []
|
176 | 177 |
|
177 | 178 | request_body = operation / 'requestBody'
|
| 179 | + |
178 | 180 | try:
|
179 |
| - media_type, mimetype = self._get_media_type( |
180 |
| - request_body / 'content', request) |
181 |
| - except MediaTypeFinderError as exc: |
| 181 | + raw_body = self._get_body_value(request_body, request) |
| 182 | + except MissingRequiredRequestBody as exc: |
182 | 183 | return None, [exc, ]
|
| 184 | + except MissingRequestBody: |
| 185 | + return None, [] |
183 | 186 |
|
184 | 187 | try:
|
185 |
| - raw_body = self._get_body_value(request_body, request) |
186 |
| - except MissingRequestBody as exc: |
| 188 | + media_type, mimetype = self._get_media_type( |
| 189 | + request_body / 'content', request) |
| 190 | + except MediaTypeFinderError as exc: |
187 | 191 | return None, [exc, ]
|
188 | 192 |
|
189 | 193 | try:
|
@@ -233,8 +237,9 @@ def _get_parameter_value(self, param, request):
|
233 | 237 | return location[param['name']]
|
234 | 238 |
|
235 | 239 | def _get_body_value(self, request_body, request):
|
236 |
| - required = request_body.getkey('required', False) |
237 |
| - if not request.body and required: |
| 240 | + if not request.body: |
| 241 | + if request_body.getkey('required', False): |
| 242 | + raise MissingRequiredRequestBody(request) |
238 | 243 | raise MissingRequestBody(request)
|
239 | 244 | return request.body
|
240 | 245 |
|
|
0 commit comments