Пользовательский Spring Rest Rest Control с поддержкой HATEOAS - PullRequest
0 голосов
/ 06 мая 2018

Я реализую Spring Data REST в одном из моих проектов. Я должен написать несколько пользовательских репозитариев, чтобы писать собственные запросы. Я использую контроллер перед моим REST-хранилищем. Чтобы получить ответ HATEOAS, я использую PersistentEntityResourceAssembler в своем контроллере. Этот контроллер работает нормально для одной сущности, но в случае списка я получаю исключение «PersistentEntity не должно быть нулевым!»

@RequestMapping(value="/employmentType", method=RequestMethod.GET, produces="application/hal+json")
    @ResponseBody
    public ResponseEntity<?> getEmploymentTypes(HttpServletRequest request, HttpServletResponse response,PersistentEntityResourceAssembler resourceAssembler) throws TenantUnavailableException, TenantInvalidException
    {
        try
        {
            List<EmploymentType> employmentTypeList = employmentTypeRepository.findAll();
            if(null==employmentTypeList || employmentTypeList.size()==0)
                return new ResponseEntity<ApiResponse>(new ApiResponse(false, ENTITY_NOT_FOUND),
                        HttpStatus.NOT_FOUND);
            // Accessing the 0th index works fine
            //In case of a full list, it throws "Persistant Entity must not be null !" exception
            return ResponseEntity.ok(resourceAssembler.toResource(employmentTypeList.get(0)));
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return new ResponseEntity<ApiResponse>(new AppResponse(false, REQUEST_NOT_PROCESSED),
                    HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

Я пытаюсь использовать максимальную функциональность пружины с минимальной поддержкой кодирования с моей стороны. Я не хочу писать ResourceAssembler для каждой постоянной сущности в моем проекте.

Пожалуйста, предложите, если у кого-нибудь есть идеи.

1 Ответ

0 голосов
/ 06 мая 2018

Для работы со списком «ресурсов» вы можете использовать класс Ресурсы , например, так:

List<EmploymentType> types = employmentTypeRepository.findAll();
Resources<Resource<EmploymentType>> resources = Resources.wrap(types);
resources.add(/* you can add some links here */);
return ResponseEntity.ok(resources);

С Resources Javadoc:

Общий помощник для простого создания оболочки для коллекции сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...