Skip to content
This repository was archived by the owner on Feb 26, 2023. It is now read-only.
This repository was archived by the owner on Feb 26, 2023. It is now read-only.

Add @Body and require annotations on all REST method parameters #1602

Description

@WonderCsabo

Now we have multiple REST annotations to be added on method parameters (@Part, Field, @Path) and more to come (@QueryParam, @QueryMap). But we do not have a dedicated annotation for the request body. Currently we are assuming that if the one method parameter not annotated with anything is the request body. This is complicated in the validation and generation code, and also confusing in the client-side annotated code.

We should have a dedicated @Body annotation and require annotations on all method parameter in REST methods.

Activity

  1. added this to the 4.0 milestone on Oct 28, 2015
  2. yDelouis commented on Oct 29, 2015

    @yDelouis
    Contributor

    I'm okay with that.

  3. shiraji commented on Oct 30, 2015

    @shiraji
    Contributor

    Is this issue talking about this code?

    This method generates

        @Override
        public Event addEvent(Event event) {
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType("application/json")));
            HttpEntity<Event> requestEntity = new HttpEntity<Event>(event, httpHeaders);
            return restTemplate.exchange(rootUrl.concat("/events/"), HttpMethod.POST, requestEntity, Event.class).getBody();
        }

    So now what you guys want is

        @Post("/events/")
        @Accept(MediaType.APPLICATION_JSON)
        Event addEvent(@Body SomeClass body);
        @Override
        public Event addEvent(SomeClass body) {
            HttpHeaders httpHeaders = new HttpHeaders();
            httpHeaders.setAccept(Collections.singletonList(MediaType.parseMediaType("application/json")));
            HttpEntity<SomeClass> requestEntity = new HttpEntity<SomeClass>(body, httpHeaders);
            return restTemplate.exchange(rootUrl.concat("/events/"), HttpMethod.POST, requestEntity, Event.class).getBody();
        }

    And after creating @Body, AA won't accept parameter without REST method annotations.

  4. WonderCsabo commented on Oct 30, 2015

    @WonderCsabo
    MemberAuthor

    @shiraji exactly!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions