2015-07-08 6 views
1

Хотел создать ниже иерархической структуры в REST с JAXRS и трикотажем, как поставщикRESTful Hirerarchy с классами с JAXRS

@POST /origination/customers/ 
@PUT /origination/customers 
@GET /origination/customers/{customerId} 

@POST /origination/customers/{customerId}/inventory 
@PUT /origination/customers/{customerId}/inventory 
@GET /origination/customers/{customerId}/inventory/inventoryId 

В настоящее время всех сервисы написаны в одном классе OriginationService, но для лучшей герметизации, я бы как узнать, могут ли сервисы быть преломленными, например, при создании клиента в отдельном классе CustomerOriginationService и Inventory origient внутри CustomerInventoryService (это примерный сценарий, моя проблема - нечто подобное)

Возможно ли достичь вышеуказанного с помощью JAXRS (Джерси) аннотация

+1

Вы можете посмотреть на [подресурсов локаторы] (https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2424) –

+0

Это почти то, что я ищу, спасибо тонну (почти, еще не выяснили, может ли он справиться со всеми имеющимися у нас). Еще одно сообщение Stackoverflow в том же контексте http://stackoverflow.com/questions/9073336/jax-rs-refactor-sub-resource-into-separate-resource-class –

ответ

1

Определенно! Ant - это стандартный способ сборки набора HTTP-методов в разных классах. Вам необходимо использовать @Path Пример - @Path("/{parameter}").

Ниже кода может быть полезным для вас -

Интерфейс управления -

package com.teducate.api; 

import java.io.UnsupportedEncodingException; 

import javax.ws.rs.DefaultValue; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.Response; 

public interface TekEvents { 
    @GET 
    @Path("/{parameter}") 
    @Produces("application/json") 
    Response responseMsg(@PathParam("parameter") String parameter, 
      @DefaultValue("Nothing to say") @QueryParam("value") String value) throws UnsupportedEncodingException; 
} 

Реализация -

package com.teducate.api.impl; 

import javax.ws.rs.Path; 
import javax.ws.rs.core.Response; 

import com.teducate.api.TekEvents; 
import com.teducate.bo.TekEventsBO; 
import com.teducate.bo.impl.TekEventBOImpl; 

@Path("events") 
public class TekEventsController implements TekEvents { 

    TekEventsBO tekEventsBO; 

    public TekEventsController() { 
     tekEventsBO = new TekEventBOImpl(); 
    } 

    public Response responseMsg(String parameter, String value) { 
     String output = tekEventsBO.responseMsg(parameter, value); 
     return Response.status(200).entity(output).build(); 
    } 
} 
Смежные вопросы