Как добавить новый субресурс в стандартный Intershop AbstractResourceObject - PullRequest
2 голосов
/ 13 марта 2019

Я хочу представить новый подресурс стандартному Intershop ProductResource. без потери контекста ресурса продукта.

E.g. В коде моего ресурса я хочу узнать о продукте, на который ссылается клиент REST /product/SOME/my-sub-resource

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 14 марта 2019
  1. Вам необходимо добавить новый класс Java, расширяющий com.intershop.component.rest.capi.resource.AbstractRestResource
  2. Зарегистрировать реализацию в файле компонента
<implementation name="YOUR_NAME"
    implements="AbstractRestResource"
    class="YOUR_FQNAME_TO_IMPL_CLASS"
    factory="JavaBeanFactory">
    <requires name="name" contract="String" cardinality="1..1" />
    <requires name="subResource" contract="RestResource" cardinality="0..n" />
</implementation>
  1. Создание экземпляра реализации в файле компонента
<instance with="YOUR_NAME" name="YOUR_INSTANCE_NAME">
    <fulfill requirement="name" value="YOUR_SUBRESOUCE_NAME" />
</instance>
  1. Добавить как subResource в intershop.WebShop.RESTAPI.ProductResource экземпляр
<fulfill requirement="subResource" 
    of="intershop.WebShop.RESTAPI.ProductResource" 
    with="YOUR_INSTANCE_NAME"/>

После этого ваш ресурс доступен под /product/SKU/YOUR_SUBRESOURCE_NAME. Убедитесь, что у вашего класса impl есть открытый метод, и этот метод помечен javax.ws.rs.GET и javax.ws.rs.Produces

@GET
@Produces("application/json")
public SomeRO get()
{
    ApplicationBO applicationBO = provider.get();
    ProductBORepository productBORep = applicationBO.getRepository(ProductBORepositoryExtension.EXTENSION_ID);
    ProductBO product = productBORep.getProductBOBySKU(getParent().getName());
    // Do the stuff you want with the product
}

1 голос
/ 13 марта 2019

В «Поваренной книге - REST Framework» есть рецепт:

Добавление ресурса в существующий API REST https://support.intershop.com/kb/index.php/Display/28269L

...