DEV Community

Mercy
Mercy

Posted on

3 2 2 2 1

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🎉🥳

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay