When I execute a GET request for a room that doesn’t exist, I get an HTTP 500 (Internal Server Error) back instead of HTTP 404 (Not Found), which would be the correct return code for REST.
My Request:
GET http://localhost:9090/plugins/restapi/v1/chatrooms/doesnt.exist/ HTTP/1.1 Accept-Encoding: gzip,deflate Authorization: AUTHCODE Host: localhost:9090 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
The Response:
HTTP/1.1 500 Internal Server Error Date: Sat, 20 Aug 2016 09:45:10 GMT Set-Cookie: JSESSIONID=ino92lblptxfkdxw6at7srmv;Path=/;HttpOnly Expires: Thu, 01 Jan 1970 00:00:00 GMT X-Frame-Options: deny Content-Length: 0
The Server Log is pretty clear:
2016.08.20 11:45:10 ERROR [Jetty-QTP-AdminConsole-63]: org.jivesoftware.openfire.plugin.rest.exceptions.RESTExceptionMapper - RoomNotFoundException: Could not find the chat room with ressource doesnt.exist
I didn’t test it for other entities, but 404 should always be returned for cases where the requested entity isn’t found. HTTP 500 Should really only be returned in case an unexpected Exception occurs.