Build a Custom REST API with REST Builder

 

Step-by-Step: Build a Custom REST API with REST Builder

  1. Create a multi-module Gradle project: impl, api, client modules

  2. Add REST Builder plugin to impl/build.gradle:

buildscript {
dependencies {
classpath group: 'com.liferay', name: 'com.liferay.gradle.plugins.rest.builder'
}
}
apply plugin: 'com.liferay.portal.tools.rest.builder'

  1. Create rest-config.yaml and rest-openapi.yaml in impl module root

  2. Run: ./gradlew buildREST - generates all interface, base, DTO classes

  3. Implement business logic in generated *ResourceImpl.java:

@Component(service = ProductResource.class)
public class ProductResourceImpl extends BaseProductResourceImpl {
@Reference
private ProductLocalService _productLocalService;


@Override
public Page<Product> getProductsPage(
String filter, Pagination pagination, Sort[] sorts) throws Exception {
// OData filter parsing
Filter oDataFilter = _filterParserProvider.provide(ProductEntityModel.class)
.parse(filter);
// Fetch from service
List<ProductModel> models = _productLocalService.getProducts(
pagination.getStartPosition(), pagination.getEndPosition(), ...
);
return Page.of(models.stream()
.map(ProductDTOConverter::toDTO).collect(toList()),
pagination, _productLocalService.getProductsCount());
}
}

  1. Deploy: ./gradlew deploy - API available at /o/product/v1.0/products

💡 REST Builder generates a complete Java client SDK automatically. This can be used by other Liferay modules or external Java services to consume your API with type-safe method calls.

Comments