Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Classe AbstractREST não segue os padrões de aplicações REST #98

Open
joaomarcusc opened this issue Oct 25, 2017 · 2 comments
Open

Comments

@joaomarcusc
Copy link

joaomarcusc commented Oct 25, 2017

Ao criar uma aplicação REST usando o demoiselle-generator, deparei-me com uma diferença na classe AbstractREST em relação ao padrão de aplicações REST. Os métodos PUT e PATCH são implementados fora do padrão. Analisando o trecho do código a que me refiro:

    @POST
    @Transactional
    @ApiOperation(value = "persist entity")
    @Override
    public T persist(@Valid T entity) {
        return bc.persist(entity);
    }

    @PUT
    @Transactional
    @ApiOperation(value = "full update entity")
    @Override
    public T mergeFull(@Valid T entity) {
        return bc.mergeFull(entity);
    }

    @PATCH
    @Path("{id}")
    @Transactional
    @ApiOperation(value = "partial update entity")
    @Override
    public T mergeHalf(@PathParam("id") final I id, T entity) {
	return bc.mergeHalf(id, entity);
    }

Verificamos que o método PUT age diretamente sobre a URL /resource, e o método PATCH sobre a URL /resource/{id}.
De acordo com as informações presentes na página REST API Tutorial:

  1. As operações de atualização de um resource devem operar sobre a URL do próprio resource. Portanto, o método PUT deveria operar sobre a URL /resource/{id}, não sobre /resource.
  2. O método PATCH opera sobre a URL /resource/{id}, fazendo uma atualização parcial do resource.
@leonardomerlin
Copy link

Concordo contigo... e só pra ver se eu entendi bem, no "item 1" você quis dizer PUT no lugar de POST?

"Portanto, o método POST deveria operar sobre a URL /resource/{id}, não sobre /resource."

@joaomarcusc
Copy link
Author

Isso @leonardomerlin obrigado pela correção, já atualizei!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants