DEV Community

Mercy
Mercy

Posted on

HTTP Status 405 - Method Not Allowed Error for Rest API -> Solution

Good morning☕️, my fellow developers👩‍💻. I hope you are doing great because I am doing well. Today, I decided to come to the rescue of some of you who are getting the 405 Method Not Allowed. Whether you are creating REST APIs or requesting the URL, you get the 405 error. This article has you covered.

I have been trying to request my URL and I was getting the above-mentioned error
Here is the URL I WAS requesting

http://localhost:8080/users/services/start/import

@Path("/start")

public class StartService {
@GET
@Path("/import")
@Produces({"text/plain","application/xml","application/json"})
public String getVersion() {
    String ver="";

    try{


          Runtime rt = Runtime.getRuntime();
          Process pr = rt.exec("C:\\server\\dgr -v" );

          BufferedReader stdInput = new BufferedReader(new InputStreamReader
(pr.getInputStream()));
          BufferedReader input = new BufferedReader(stdInput);
         // String ver ="";
          StringBuffer verOutput = new StringBuffer();
                while((ver =  input.readLine()) != null){
                    verOutput.append(ver + "\n");
                    System.out.println(ver);
                }


        }catch (Throwable t)  
          {  
            t.printStackTrace();  
          }  


        finally {  

        }
    return ver;  }

}
Enter fullscreen mode Exit fullscreen mode

In my investigation of the cause and solution of the error, I found out that the 405 error can happen when you try a Get request on something that only allows a POST request or VSV.
Secondly, you might have tried http: on a method that requires https

I found out that the cause of the error was a content-type issue
Changed this @Produces({"text/plain","application/xml","application/json"})
to this

@Produces("text/plain") ad it worked perfectly.

This is because the headers/content-type being sent to the API must match what it is expecting, or else it will return HTTP 405.

Visit this link to learn more about this type of error

Some possible areas to check if you encounter the same error

CORS Issues:

If your frontend and backend are running on different ports (e.g., frontend on 4200 and backend on 8080), ensure that CORS (Cross-Origin Resource Sharing) is properly configured on your backend server to allow requests from your frontend's origin3.

Debugging Server Responses:
Implement logging on the server side to capture incoming requests and their methods. This can help you determine whether the request is reaching the server and how it is being processed.

Testing with Tools:
Use tools like Postman or cURL to manually send a POST request to your endpoint. This can help isolate whether the issue lies within your Angular application or on the server itself.

Share your thoughts in the comments below⬇️
Have a Happy Tuesday🎉🥳

Top comments (0)