2017-03-27 4 views
0

와의 RESTful API의 PARAMS을 구문 분석합니다. 그것은 StringUserId에 그것의 fetch 메서드에 전달 될 때 구문 분석하는 것이 가능 예 :방법의 내가 있다고 가정 해 봅시다 Dropwizard

@GET 
public UserList fetch(@PathParam("user") UserId userId) { 
    // Do stuff here 
} 

가 나는 방법 안에 나는 일단 내가 문자열을 구문 분석 할 수 있습니다 실현,하지만 내 방법이 더 편리 할 것 내가 원하는 타입을 얻는다.

답변

1

요청 본문과 함께 GET 통화를 시도했는데별로 도움이되지 않습니다. 읽어 마십시오 바울의 answer here -

당신이 GET으로 몸을 보낼 수없고, 할 유용한 결코

그래서

, 연습하는 것이 좋다 일 것 PUT 또는 POST를 만들기 위해 무엇

다음과 같이 (PUT vs POST in REST)를 호출 -

@POST 
@Path("/some-path/{some-query-param}") 
public Response getDocuments(@ApiParam("user") UserId userId, 
          @PathParam("some-query-param") String queryParam) { 
    UserId userIdInstance = userId; // you can use the request body further 

- com.wordnik.swagger.annotations 패키지에서 가져온 사용되는 ApiParam 주석. 입력 소스에 따라 FormParam, QueryParam을 유사하게 사용할 수 있습니다.

+0

좋은 설명 +1. –

0

Dropwizard is using Jersey (HTTP <) -> Java POJO 마샬링. Jersey @*Param (@FormParam, @QueryParam 등)의 여러 주석을 일부 매개 변수에 사용할 수 있습니다. 이 ValidRepresentation 객체와 "SOMETHINGELSE"으로 기대 HTTP POST 메서드에 응답하는 API 엔드 포인트를 정의

@Path("/valid/") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public class ValidatingResource { 
    @POST 
    @Path("foo") 
    @Valid 
    public ValidRepresentation blah(@NotNull @Valid ValidRepresentation representation, @QueryParam("somethingelse") String xer) { 
     return new ValidRepresentation(); 
    } 

: 당신이지도를 사용해야하는 경우

은/마샬/자바 POJO를이 test cases in Dropwizard 살펴보고에서 HTTP 메소드 쿼리 매개 변수입니다. 엔드 포인트는 JSON 매개 변수가 제공된 경우에만 응답하며 JSON 오브젝트 (클래스 레벨에서는 @Produces 및 @Consumes) 만 리턴합니다. @NotNull은 호출이 성공하기 위해 그 객체가 필수적이어야하고 @Valid는 Dropwizard가 Hibernate validator를 호출하여 끝점을 호출하기 전에 객체의 유효성을 검사하도록 지시합니다.

ValidRepresentation 클래스는 here입니다 :

package io.dropwizard.jersey.validation; 

import com.fasterxml.jackson.annotation.JsonProperty; 
import org.hibernate.validator.constraints.NotEmpty; 

public class ValidRepresentation { 
    @NotEmpty 
    private String name; 

    @JsonProperty 
    public String getName() { 
     return name; 
    } 

    @JsonProperty 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

POJO와이 개체의 JSON 표현처럼 보이게하는 방법을 정의하는 잭슨 주석을 사용하고 있습니다. @NotEmtpy는 Hibernate validator의 어노테이션이다.

Dropwizard, Jersey 및 Jackson이 세부 사항을 처리합니다. 그래서 기본적인 것들을 위해서 당신이 필요로하는 것이 전부입니다.