2015-05-07 9 views
6

Disclaimer: Sono nuovo di Java, Spring e Spring Boot.Spring Boot Restituzione 405 anziché 404 per POST a URL sconosciuto

Mi piacerebbe avere Spring Boot restituire un 404 quando si prova a POST a un URL che non esiste. Tuttavia, al momento restituisce un 405, con un'intestazione Consenti che include solo GET e HEAD. C'è un modo per personalizzare quali metodi HTTP sono consentiti in modo da ottenere un 404? Ho provato a implementare un ErrorController personalizzato, ma non sembra funzionare.

Per essere chiari: questo è quando sto postando a un URL che non deve essere accompagnato da qualsiasi dei miei endpoint definiti, ad esempio http://example.com/some-bogus-thing

Se sono necessarie più informazioni per diagnosticare questo , Sarei felice di fornirlo. Data la mia non familiarità con la piattaforma, non sono sicuro di ciò che è rilevante.

+0

È necessario annotare il metodo con @RequestMapping e impostare l'attributo del metodo sul tipo desiderato. – vinay

+0

Crea un [MCVE] (http://stackoverflow.com/help/mcve) e inserisci il codice. Posso riprodurre questo comportamento esatto, ma non riesco a spiegarlo, ecco perché un commento e nessuna risposta. –

+0

Anche io sto vedendo questo e l'interrogante è corretto. Guardando alla fonte sembra che un 404 venga restituito solo per una richiesta GET a un URL non valido. Per tutte le altre richieste, per qualsiasi ragione, il framework di default restituisce un 405. –

risposta

1

HTTP 405 (Method not found) viene restituito, when URL exists e si tenta di utilizzare un metodo HTTP non consentito su quella particolare mappatura URL.

se invochi un POST al di sotto di .../test allora restituirà HTTP 405 e viceversa.

@RequestMapping(value = "/test", method = RequestMethod.GET) 

se non c'è la mappatura URL per uno dei metodi HTTP, allora sarà tornare HTTP 404.

conoscere tutte le mappature attuali che particolare istanza di avvio, solo per andare navigatore

http://localhost:8080/mappings 
+1

Sì, la situazione che descrivi è quella in cui vorrei restituire un 405. Tuttavia, il mio scenario è quando sto postando su un URL che * non * esiste. Voglio che sia un 404, ma Spring Boot restituisce un 405. –

+1

Questo non è possibile. Se non vi è alcuna mappatura URL, restituirà 404. Se restituisce 405 significa, c'è una mappatura. Confrontalo con il mapping da 'localhost: 8080/mappings'. – K139

+0

Quando vado a localhost: 8080/mappings, ottengo una pagina con un messaggio di errore rosa in alto che dice: 'Questa pagina contiene i seguenti errori: error on line 1 at column 25: expected '>' Di seguito è riportato un rendering della pagina fino al primo errore. Quale modello sta cercando di visualizzare? Posso correggerlo, ma non ho idea di dove guardare. –

Problemi correlati