Accès à la plateforme API
La documentation de l’API d’EPC se trouve sur Swagger, où nous hébergeons tous les services possibles de l’API d’EPC. La documentation complète des opérations de l’API d’EPC est accessible à l’adresse https://YOUREPC.interfacing.com/api/v1/swagger. Swagger s’ouvrira immédiatement, vous permettant d’accéder aux opérations possibles.
Comment utiliser Swagger
Les services sont organisés par sujet. L’expansion de l’un d’entre eux listera chaque requête API possible pour ce sujet. Il existe trois types principaux de requêtes :
- Get : Équivalent à une requête SQL SELECT
- Put : Équivalent à une requête SQL UPDATE
- Post : Équivalent à une requête SQL CREATE
Chaque requête a sa propre section, qui comprend :
1. Un exemple de données/attributs inclus dans la requête
2. Paramètres/filtres que vous pouvez configurer dans la requête (certains sont requis) :
Exemple de code JAVA d’un client complet utilisant Spring Boot :
package com.interfacing.epc.sync.bpc.service;
import java.util.Collection;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.WebClient;
import lombok.RequiredArgsConstructor;
import reactor.core.publisher.Mono;
import com.interfacing.bpc.api.domain.BaseElement;
import com.interfacing.bpc.api.domain.NodeElement;
import com.interfacing.bpc.api.domain.patch.PatchOperation;
@Service
@RequiredArgsConstructor
public class ItemService {
private final WebClient bpcClient;
private final MultiValueMap<String, String> defaultQueryParams; // when retrieving objects
private final MultiValueMap<String, String> defaultEditParams; // when editing objects
public Mono<BaseElement> findBaseElement(@NotNull String nodeId) {
return bpcClient.get()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}").queryParams(defaultQueryParams).build(nodeId))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public <T extends NodeElement> Mono<T> findElement(@NotNull String nodeId, Class<T> clazz) {
return bpcClient.get()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}").queryParams(defaultQueryParams).queryParam("detail", true).build(nodeId))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<String> findDescription(@NotNull String nodeId) {
return bpcClient.get()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}/description").queryParams(defaultQueryParams).build(nodeId))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<String> findRichTextDescription(@NotNull String nodeId) {
return bpcClient.get()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}/richTextDescription").queryParams(defaultQueryParams).build(nodeId))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<String> findWebappUrl(@NotNull String nodeId) {
return bpcClient.get()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}/url/webapp").queryParams(defaultQueryParams).build(nodeId))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<BaseElement> createItem(@NotNull NodeElement nodeElement) {
return bpcClient.post()
.uri(uriBuilder -> uriBuilder.path("/items").queryParams(defaultEditParams).build())
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(nodeElement))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<BaseElement> updateItem(@NotNull NodeElement nodeElement) {
return bpcClient.put()
.uri(uriBuilder -> uriBuilder.path("/items/{nodeId}").queryParams(defaultEditParams).build(nodeElement.getNodeId()))
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(nodeElement))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
public Mono<Collection<BaseElement>> patchItem(@NotNull String nodeId, @NotEmpty Collection<PatchOperation> patchOperations) {
return bpcClient.patch().uri(uriBuilder -> uriBuilder.path("/items/{nodeId}").queryParams(defaultEditParams).build(nodeId))
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(patchOperations))
.retrieve()
.bodyToMono(new ParameterizedTypeReference<>() {
});
}
}
Laissez votre avis sur ce sujet.