Fixes bug where requestsOfType() would fail if no body
- Passes if request has no body - Returns a JSON object with an error message when request doesn't match type, the response body was "[object Object]"
This commit is contained in:
		
							parent
							
								
									d4914983a4
								
							
						
					
					
						commit
						cd21e9ae72
					
				
					 2 changed files with 17 additions and 3 deletions
				
			
		|  | @ -138,6 +138,17 @@ app.get('/', (req, res) => { | |||
|   res.sendFile(renderIndex()); | ||||
| }); | ||||
| 
 | ||||
| // Handle API errors
 | ||||
| app.use('/api', (error, req, res, next) => { | ||||
|   if (error && error.code && !res.headersSent) { | ||||
|     res.status(error.code).json({ error: error.message }); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   next(error); | ||||
| }); | ||||
| 
 | ||||
| 
 | ||||
| // Handle missing routes.
 | ||||
| app.get('*', (req, res) => { | ||||
|   res.status(404); | ||||
|  |  | |||
|  | @ -4,11 +4,14 @@ | |||
|   header does not match `type` | ||||
| */ | ||||
| const requestsOfType = type => (req, res, next) => { | ||||
|   if (req.get('content-type') != null && !req.is(type)) { | ||||
|   const hasContentType = req.get('content-type') !== null; | ||||
|   const isCorrectType = req.is(type) === null || req.is(type) === type; | ||||
| 
 | ||||
|   if (hasContentType && !isCorrectType) { | ||||
|     if (process.env.NODE_ENV === 'development') { | ||||
|       console.log('in requests of type error'); | ||||
|       console.error(`Requests with a body must be of Content-Type "${type}". Sending HTTP 406`); | ||||
|     } | ||||
|     return next({ statusCode: 406 }); // 406 UNACCEPTABLE
 | ||||
|     return next({ code: 406, message: `Requests with a body must be of Content-Type "${type}"` }); // 406 UNACCEPTABLE
 | ||||
|   } | ||||
| 
 | ||||
|   return next(); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Andrew Nicolaou
						Andrew Nicolaou