Torniamo a parlare dei servizi REST esposti da Liferay e vediamo come fare per modificare il metodo HTTP con cui questi servizi vengono esposti; ogni servizio REST esposto viene infatti mappato su uno specifico metodo HTTP, GET oppure POST.
In particolare tutti i metodi Java (dello strato remoto dei servizi) il cui nome inizia con get
, has
oppure is
sono considerati di sola lettura ed automaticamente mappati sul metodo GET; tutti gli altri metodi vengono invece esposti con il metodo POST.
Può tuttavia capitare di avere dei metodi Java di sola lettura che iniziano con un prefisso diverso (ad esempio count
) e che Liferay espone erroneamente con il metodo POST. Cambiare il metodo HTTP è però molto semplice, basta utilizzare l'annotation JSONWebService
già vista in precedenza sul metodo Java interessato:
@JSONWebService(method = "GET")
public boolean countSomething(…)
Ma non finisce qui, perchè di default Liferay non controlla il metodo HTTP con cui vengono invocati i servizi REST ed è quindi possibile invocarli in qualsiasi modo, senza alcun controllo; per obbligare Liferay a lavorare in modalità strict, verificando cioè il metodo HTTP di provenienza, è sufficiente impostare la seguente property:
jsonws.web.service.strict.http.method=true
Infine ricordiamo anche che è possibile disabilitare in maniera puntuale solamente alcuni metodi HTTP rispetto ad altri, impostando la seguente property:
jsonws.web.service.invalid.http.methods=DELETE,POST,PUT