Not found error no message available

Not found error no message available

Я создал демонстрационный проект Spring Boot и внедрил Restful services, как показано здесь

@RestController

public class GreetingsController {

  @RequestMapping(value=”/api/greetings”, method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)

  public ResponseEntity<String> getGreetings(){

  return new ResponseEntity<String>(“Hello World”, HttpStatus.OK);

  }

}

Когда я попытался вызвать службу с помощью инструмента Postman с URL “http://localhost:8080/api/greetings ” при получении метода запроса я получаю сообщение об ошибке ниже

{

  “timestamp”: 1449495844177,

  “status”: 404,

  “error”: “Not Found”,

  “message”: “No message available”,

  “path”: “/api/greetings”

}

Для приложения Spring Boot мне не нужно настраивать сервлет Spring Dispatcher в web.xml .

Может ли кто-нибудь помочь мне найти здесь недостающий момент?

Ответ

Вероятно, вы что-то упускаете@SpringBootApplication:

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application {

  public static void main(String[] args) throws Exception {

  SpringApplication.run(Application.class, args);

  }

}

@SpringBootApplication включает @ComponentScan который сканирует пакет, в котором он находится, и все дочерние пакеты. Ваш контроллер может отсутствовать ни в одном из них.

Ответы на ошибки REST при загрузке Spring

Формат ответов на ошибки из веб-служб REST всегда был для меня темой серой зоны. По моему мнению, какой бы формат вы ни выбрали, он должен предоставлять клиентам достаточно информации, используя веб-службы REST, чтобы клиенты могли корректно обрабатывать ситуации с ошибками. Spring Boot придерживается определенного мнения по этому поводу. В этой статье я покажу, как Spring Boot форматирует ответы на ошибки.

Пример веб-службы REST

Предположим, у нас есть веб-служба REST со следующей спецификацией:

HTTP Method and URL:

POST /some-resource

Request Headers:

Content-Type – application/json is allowed

Request JSON Body Attributes:

name (required) – type is string

age (required) – type is integer and should be between 0 and 100 inclusive

Ответы на ошибки

Давайте посмотрим примеры нескольких сообщений об ошибках, возвращаемых веб-службой REST при реализации с использованием Spring Boot. В каждом примере обратите внимание, какая вся информация отправляется службой обратно в теле ответа.

POST /some-resource with Content-Type as application/xml

В этом случае значение Content-Type заголовка не соответствует тому, которое поддерживает служба.

{

  “timestamp”: 1467943353634,

  “status”: 415,

  “error”: “Unsupported Media Type”,

  “exception”: “org.springframework.web.HttpMediaTypeNotSupportedException”,

  “message”: “Content type ‘application/xml’ not supported”,

  “path”: “/some-resource”

}

Механизм, лежащий в основе сообщений об ошибках весенней загрузки

Весенняя загрузка перенаправляет все сообщения об ошибках на /error сопоставление. У Spring Boot естьBasicErrorController, который обрабатывает отображение ошибок. Тела ответов, показанные выше, генерируются DefaultErrorAttributes.

Чтобы полностью заменить поведение по умолчанию, вы можете реализовать ErrorController и зарегистрировать определение компонента этого типа или просто добавить компонент типа ErrorAttributes, чтобы использовать существующий механизм, но заменить содержимое.

Наталья Петрова
Оцените автора
Новости города Салавата
Добавить комментарий

Adblock
detector