Histórico da Página
...
Como fazer uma chamada REST para obter dados
O Fluig dispõe de um método chamado WCMAPI.Read que iremos utilizá-lo para fazer chamadas REST.
Abaixo temos um exemplo de como é feito uma chamada para um 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();
}
}); |
Onde o método WCMAPI.getServerURL() traz a url do server que utilizaremos 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'.
Neste caso vamos Vamos criar um rest dentro da própria widget, para isso devemos seguir alguns passos.
...
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 } |
Em seguida 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 de alterar os arquivos jboss-web.xml
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> <valve> <class-name>com.totvs.technology.auth.saml.TOTVSAuthenticatorValve</class-name> </valve> </jboss-web> |
Também temos de 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>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> |
Após isso estamos capazes de utilizar o REST que se encontra dentro da widget utilizando um método chamado WCMAPI.Read que iremos utilizá-lo 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 server que utilizaremos 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'. Sendo:
'/news' o código da widget.
'/api/rest' é o @Path da classe ApplicationConfig.java.
'/news' é o @Path da classe NewsRest.java.
'/feed' é o @Path do método que desejamos chamar da classe NewsRest.java.
...
Exportar a widget no servidor Fluig
...