У меня есть RESTful контроллер для приложения, позволяющее просматривать записи из БД по их id.
@RestController
@RequestMapping(value = "/logs")
public class AppAdminController {
@Autowired
RabbitListenerEndpointRegistry registry;
@Autowired
RestLogRepository restLogRepository;
@Autowired
RestLogRepositoryCustomImpl restLogRepositoryCustom;
final ModelMapper modelMapper;
public AppAdminController(ModelMapper modelMapper) {
this.modelMapper = modelMapper;
}
@ApiOperation("Поиск body лога по его id")
@GetMapping("/body/{id}")
public String readBodyById(
@PathVariable(value = "id", required = true) Long logId
) {
return GzipUtils.unzip(restLogRepository.findByLogId(logId)
.orElseThrow(() -> new NoSuchElementException("Element not found")).getBody());
}
@ApiOperation("Поиск лога по его id")
@GetMapping("/{id}")
public RestLogDto readById(
@ApiParam("id лога")
@PathVariable(value = "id", required = true) Long logId) {
return DtoConverter.convert(
restLogRepository.findByLogId(logId).orElseThrow(() -> new NoSuchElementException("Element not found")),
modelMapper);
}
}
Значения возвращаются в виде класса и, соответственно, преобразуются в JSON.
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RestLogDto {
Long id;
Long responseId;
String javaLogId;
Date createdOn;
Date responseCreatedOn;
String status;
String responseStatus;
String message;
String responseMessage;
String responseDuration;
String body;
}
Вопросы: Каким образом нужно реализовать View для этого приложения? Нужно ли писать еще один (уже MVC) контроллер? Насколько я понял, сама суть RestController в том, чтобы возвращать не View, а данные. Будет ли в таком случае само желание добавить сюда View ошибочным?
В интернете супер-много информации и статей, которые только сильнее путают и вгоняют в ужас меня как лоулевельного джуна, поэтому надеюсь на вас. Заранее спасибо
Реализовывать View для RESTfull сервиса - ошибка. View(как и Model) нужно только для MVC-приложения.
REST сервис должен возвращать данные, предпочтительно JSON. В большинстве случаев вы можете возвращать сам объект(который ищите по id), а Spring автоконвертирует его в JSON.
Фронт вам надо писать отдельно, на JS. В ванильном JS вы можете просто отправлять HTTP запросы на свой рест, и получать ответы используя XHR
. Но это сложный способ, гораздо легче использовать какой нибудь фреимворк, например Angular или Vue.
Также вы можете не писать второй CustomRepository
, а использовать аннотацию @Query
на методе в обычном Repository
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Я создал класс на основе класса JMenu, который принимает строковый ArrayList, хранящий названия подпунктов меню, и строку с названием пункта меню