Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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
languagejs
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
languagejava
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
languagejava
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
languagexml
<?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
languagexml
<?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
languagejs
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.

E assim está pronto nossa chamada REST com uma classe interna na própria widget.

...

 

Exportar a widget no servidor Fluig

...