Custom REST servis oluşturarak çalışmasını istediğiniz metotları rest servis olarak dışarıya açabiliriz. Gerekli işlem adımları aşağıda anlatılmıştır.

1 - LPT projesi içerinde custom REST sınıfı oluşturulur.

class’ın public olması gerekmektedir.

2 - Context ‘e erişebileceğimiz bir metod eklenir.

public class RestCustomWebService {
private IServerContext m_ServerContext;
       private void createContext(IServerSession session) throws Exception
       {
             if(m_ServerContext == null)
             m_ServerContext = LbsServerContext.getSessionlessContext("CustomRestService", session);
       }
}

3 - REST Metod Eklenir.

REST servis üzerinden çalışmasını istediğimiz metodu public olarak ekleriz ve içerisinde yukarıdaki metodu çağırıp context’ i elde ettikten sonra yapılmasını istediğimiz işlemleri ekleriz.

Aşağıdaki örnekte rest service üzerinden query adını ve parametresi gönderilerek uyarlama projesindeki bir query’ nin çalışması sağlanmaktadır.

public boolean executeQuery(IServerSession session, String queryName, String strParameter) throws Exception
{
	createContext(session);
    boolean ok = false;
    QueryParams queryParams = new QueryParams();
    queryParams.setCustomization(ProjectGlobals.getM_ProjectGUID());
    queryParams.getParameters().put("P_STRFIELD", strParameter);
    try {
		QueryResult result = m_ServerContext.getQueryFactory().executeServiceQuery(queryName, queryParams);
        ok = result.getStatus() == QueryResult.STATUS_OK;
	} catch (Exception e){
		e.printStackTrace();
    }
	return ok;
}

4 – Sunulan Custom REST metodunu çağırmak için

http://localhost:8090/logo/restservices/rest/customization/invokeMethod path’i kullanılır.

Bu path’e parametre olarak uyarlama projesinin GUID’ i ile birlikte class, metot adı ve çalıştırılmak istenen metoda ait parametreler gönderilir.

target = target.path("/customization/invokeMethod").queryParam("className", 
"{C839F41C-F364-764D-E033-10F67ADAEAAE}.com.LPT.customization.RestCustomWebService").queryParam("methodName", "executeQuery").queryParam("parameters", paramsJSon);

5 - Sunulan custom REST metodu için istemci

Aşağıdaki java client’ında ilgili path’e ulaşarak servisin nasıl çalıştırıldığı örneklendirilmiştir.

private static void testCustomRestMethod(String token)
{
	ClientBuilder.newBuilder();
    Client client = ClientBuilder.newClient().register( new LbsRestAuthenticatorParams(CLIENT_TOKEN, token, USERNAME, "1", "TRTR", "1"));
    client.register(org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider.class);
    WebTarget target = client.target(REST_BASE_END_POINT);
    Object[] params = new Object[] {"CQTestInsert","9"};
    String paramsJSon = LbsJsonUtil.toJson(params, false, false);
	target = target.path("/customization/invokeMethod").queryParam("className", "{C839F41C-F364-764D-E033-10F67ADAEAAE}.com.LPT.customization.RestCustomWebService").queryParam("methodName", "executeQuery").queryParam("parameters", paramsJSon);
    Invocation.Builder builder = target.request();
    Response response = builder.post(Entity.json(""));
    if (response.getStatus() == Status.OK.getStatusCode())
    {
    	String returnValue = response.readEntity(String.class);
        System.out.println("Test :" + returnValue);
	}
    else
    {
    	System.out.println("Result : " + response.getStatus());
   	}
}

6 - Başlangıç için Öğretici Örnek

  • Java Class

  • Postman Request

NOT Parameterleri gönderirken "%5B" ve "%5D" ifadeleri arasına yukarıdaki şekilde olduğu gibi gönderiyoruz. Aslında bu değerler sırası ile "[" ve "]" ifadelerinin URL encode işlemine tabi tutulduklarında elde edilen değerlerdir. Bazı ortamlarda "[" ve "]" kullanmak hatalara sebep olabildiği için kullanımın resimde ki gibi olmasını öneriyoruz.

  • j-Platform Malzemeler Browser


Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım