Índice |
---|
maxLevel | 4 |
---|
outline | true |
---|
exclude | .*ndice |
---|
style | none |
---|
|
O objetivo desse guia é apresentar a integração de widgets com serviços REST.
Para obter dados de uma fonte externa à plataforma, a forma mais aconselhável é por chamada REST. Vamos criar um REST dentro do próprio widget, para isso devemos seguir alguns passos.
Informações |
---|
Dúvidas para criar o widget? Siga o guia. |
Primeiro devemos criar uma classe chamada ApplicationConfig que extende a classe Application.
Bloco de código |
---|
|
package com.fluig.kitintranet.news.proxy.rest.config;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("api/rest")
public class ApplicationConfig extends Application{
//não é necessário código, precisamos apenas para o @ApplicationPath
} |
Depois devemos criar a classe REST que desejamos acessar.
Bloco de código |
---|
|
package com.fluig.kitintranet.news.proxy.rest;
import com.totvs.technology.wcm.sdk.rest.WCMRest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/news")
public class NewsRest extends WCMRest {
@POST
@Path("feed")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response getRSSFeedTest(String requestParams) {
//código
}
} |
Em seguida, temos que alterar os arquivos jboss-web.xml
Aviso |
---|
title | application.code == context-root |
---|
|
A propriedade context-root precisa ser idêntica ao application.code fornecido para a sua widget no arquivo application.info, precedido por uma "/" Exemplo: se sua widget tem o código news, o context-root precisa ser /news |
Bloco de código |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/news</context-root>
<disable-cross-context>false</disable-cross-context>
<security-domain>TOTVSTech</security-domain>
<security-role>
<role-name>user</role-name>
<principal-name>totvstech</principal-name>
</security-role>
<security-role>
<role-name>totvstech</role-name>
<principal-name>totvstech</principal-name>
</security-role>
<security-role>
<role-name>sysadmin</role-name>
<principal-name>wcmadmin</principal-name>
</security-role>
<security-role>
<role-name>admin</role-name>
<principal-name>wcmadmin</principal-name>
</security-role>
</jboss-web> |
Também temos que alterar o arquivo web.xml para que possamos acessar esse REST.
Bloco de código |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<!-- REST -->
<security-constraint>
<display-name>REST</display-name>
<web-resource-collection>
<web-resource-name>REST</web-resource-name>
<description>REST</description>
<url-pattern>/api/rest/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>REST</description>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FLUIGAUTH,FORM</auth-method>
<realm-name>TOTVSTech</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/loginfail.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>totvstech</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
<security-role>
<role-name>sysadmin</role-name>
</security-role>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app> |
Depois disso, é possível utilizar o REST que se encontra dentro do widget por meio do método WCMAPI.Read, utilizado para fazer chamadas REST.
Bloco de código |
---|
|
var that = this;
WCMAPI.Read({
type: "POST",
url: WCMAPI.getServerURL() + '/news/api/rest/news/feed',
async: true,
data: feed,
success: function funcao(data) {
that.appendNews(data.content.channel.items);
},
error: function () {
that.showLoadingError();
}
}); |
O método WCMAPI.getServerURL() traz a URL do servidor que será utilizado para montar a URL da chamada REST. Em seguida, concatenamos o caminho do REST que pretendemos chamar. Neste caso, utilizamos o seguinte caminho: '/news/api/rest/news/feed'. Onde:
- '/news': é o código do widget;
- '/api/rest': é o @Path da classe ApplicationConfig.java;
- '/news': é o @Path da classe NewsRest.java;
- '/feed': é o @Path do método da classe NewsRest.java que desejamos chamar.