2013-03-28 2 views
1

저지를 사용하고 기존 데이터 서비스를 RESTful 데이터 서비스로 변환하고 있습니다. 가장 간단한 GET 및 PUT을 성공적으로 변환 할 수 있습니다. 그러나 다음과 같은 몇 가지 내가 변환 할 수 아니다 있습니다REST GET/POST 복잡한 매개 변수를 보내고받는 방법?

  1. X 받기 (T) // 복잡한 결과
  2. X의 PUT로 만들기위한
  3. X 포스트 (T) // 복잡한 결과에 복잡한 쿼리에 대한 일부 성공 메시지 객체와 갱신 (T) //

T와 X는 내가 @consume으로 GET에 복잡한 객체로 @QueryParam, @PathParam을 시도

복잡한 객체는 어디에@produce 그리고 그것들은 작동하지 않았습니다. 또한 인코딩 된 URL을 사용하여 POST (실제로 GET이 필요함)를 시도했지만 작동하지 않았습니다.

도와주세요. 나는 샘플 코드가 필요하다.

답변

2

REST는 쿼리가 실제로 URL이므로 개의 쿼리을 처리하도록 설계되지 않았습니다. 자원을 검색 할 때 원하는 자원의 ID를 지정하십시오. 이것은 단순히 숫자 또는 문자열이며 예를 들어 URL에 쉽게 나타낼 수 있습니다.

http://host/employee/57 

귀하는 직원 57을 얻게됩니다. 요구 사항이 더 복잡하면 몇 가지 매개 변수를 전달하는 검색 방법을 사용할 수 있습니다. 여기서 @QueryParam을 사용할 수 있지만 실제로는 순수한 형태로 남아 있지는 않습니다.

데이터를 POST 또는 PUT하는 경우 GET을 수행하는 경우와 동일한 URL을 사용합니다. 이때 콘텐츠 본문에 데이터를 보낼 때만 사용합니다. 객체를 GET 요청으로 반환하기 위해 직렬화 할 수 있으므로 클라이언트는 직렬화하여 PUT 또는 POST로 전송할 수 있어야합니다.

다음은 GET 및 POST의 예입니다.

@XmlType 
public class Employee { 
    private int id; 
    private String name; 

    //getters and setters 
} 


@Path("/employee") 
public class EmployeeService { 

    @GET 
    @Path("/{id}") 
    @Produces(MediaType.APPLICATION_XML) 
    public Employee get(@PathParam("id") String id) { 
    Employee e = employeeDao.getEmployee(id); 
    if (e != null) { 
     return e; 
    } else { 
     throw new WebApplicationException(404); 
    } 
    } 

    @POST 
    @Consumes(MediaType.APPLICATION_XML) 
    @Produces(MediaType.APPLICATION_XML) 
    public Employee post(Employee employee) { 
    return employeeDao.insertEmployee(employee); //Assumes your DAO sets the ID 
    } 

} 
+0

답장을 보내 주셔서 감사합니다. 복잡한 객체를 수신하고 반환하는 POST의 샘플 코드를 제공 할 수 있습니까? – chan

+0

이것은 좋아 보이지만 나의 기준을 충족시키지 못합니다. public X POST (T)을 (를) 찾으려고합니다. public T POST (T) chan

+0

이전 메모를 편집 할 수 없습니다. 하지만 기본적으로 내가 당신의 예제와 비교하기를 원하는 것은 public Employee post (SearchEmployeeCriteria sec)와 같은 것을하는 것입니다. 그래서 본질적으로 다른 객체의 일부로 복잡한 매개 변수 집합을 가진 직원을 검색합니다. 반환 및 매개 변수 개체가 동일하지만 내 예제에는없는 경우 예제가 작동합니다. – chan

관련 문제