Você está na página 1de 1

!

"#$%&'(")'
&*+,$($-.'

/%'0'(1',)$"+$2
3*04*%5.+*"6*4&
789:;
<,=+.$""">""/?)$""">""7)5#(""">""
/%'0'(1',)$"+$2"3*04*%5.+*"6*4&"789:;

@A
!"#$%&%&

! !

!"#$ %&'(#!)*+$,-'*!.#$$/&!.&$0#1#

" &02"(3! ,+4*5$&67#3! "$#48*'13! $*143


9*:1*$2,;*

/%'0'(1',)$"+$2"3*04*%5.+*
6*4&"789:;
BC"#*,4$?"*2".,&*-%'%"4?'4"'#(.+'DE*4"+$2"$"F6:
:%$&1*?4"G

!":%$&1*?4H"+$2$"5C%.$4"F6:I4H"4J$"4.4&*2'4"2?.&$
+$2#(*&$4"*"K?*"'0%',-*").5*%4'4"C%*'4")'"*2#%*4'H
#$%L2"4'0*2$4"K?*"2?.&$4")*44*4"F6:I4",J$"&*2
'+$2#',1')$"'4",$5'4"'#(.+'DE*4")*"2*%+')$H
#%.,+.#'(2*,&*",'"C%*'"M*0>2$0.(*N

O'4"*,K?',&$"'4"-%',)*4")*4*,5$(5*)$%'4"')*K?'2
4*?4"F6:I4"#'%'"*44'",$5'"-*%'DJ$"&*+,$(P-.+'H
#$)*2$4"2?.&$"0*2"Q'R*%"$4"-%',)*4"*"'%+'.+$4
F6:I4"+$,5*%4'%*2"+$2"Q*%%'2*,&'4"2'.4"'2.-C5*.4H
)*44'"Q$%2'"?,.2$4"$"2*(1$%")*"+')'"?2'")'4
&*+,$($-.'4"#'%'"$&.2.R'%"$4"&%'0'(1$4N

!":%$&1*?4"+$,&*2#('"'(-?2'4"Q$%2'4")*"%*'(.R'%
.,&*-%'DJ$H"+$2$S

3*04*%5.+*"T!7:

F7<":%P#%.$

3*04*%5.+*"6*4&

F2"2.,1'"+$,+*#DJ$"$"2'.4"')*%*,&*"'4
#('&'Q$%2'4"*U.4&*,&*4",$"2*%+')$"L"$"M*04*%5.+*
6*4&"K?*"#$44?."4?'"%*#%*4*,&'DJ$"*2"BT!V"*"#$%
#')%J$"/!/9T"WC"#$44?."4?'"+'2')'".,&*%Q'+*"*")*
'?&*,&.+'DJ$"0*2".2#(*2*,&')'4N

:'44$4",*+*44C%.$4"#'%'"#%*#'%'%"4*?":%$&1*?4"#'%'
Q?,+.$,'%"+$2"$"3*04*%5.+*"6*4&S

X$,Y-?%'%"?2"4*%5*%")*"M*04*%5.+*"6*4&

:'%'"%*'(.R'%"'"+$,Q.-?%'DJ$"4*%C",*+*44C%.$
').+.$,'%2$4"'(-?,4".&*,4",$"'%K?.5$"N.,.")$"4*%5*%
:%$&1*?4N"T?-.%$"K?*"4*W'"+%.')$"?2"4*%5*%"4*#'%')$
#'%'"$"3*04*%5.+*H"&',&$"#$%"K?*4&J$")*
#*%Q$%2',+*H"+$2$"&'20L2"#$%"K?*4&J$")*
2',?&*,DJ$N

1. [GENERAL]
2. MAXSTRINGSIZE=10
3.
4. [HTTPV11]
5. Enable=1
6. Sockets=HTTPREST
7.
8. [HTTPREST]
9. Port=8080
10. URIs=HTTPURI
11. SECURITY=1
12.
13. [HTTPURI]
14. URL=/rest
15. PrepareIn=All
16. Instances=1,2
17.
18. [ONSTART]
19. jobs=HTTPJOB
20. RefreshRate=30
21.
22. [HTTPJOB]
23. MAIN=HTTP_START
24. ENVIRONMENT=environment

"

8*4*,5$(5*,)$"4?'"X('44*"6*4&"789:;

:'%'"+$2*D'%2$4"'")*4*,5$(5*%",$44'":%.2*.%'
+('44*"6*4&"*2"789:;"5'2$4"#%*+.4'%"*,&*,)*%"?2
#$?+$"'".)*.'")$4"5*%0$4"*U.4&*,&*4",*4&'
%*#%*4*,&'DJ$S

PUT – Verbo responsável por realizar inclusões de


registros no sistema.

POST – Verbo responsável por realizar alterações de


registros no sistema.

GET – Verbo responsável por realizar o retorno de


registros do sistema.

DELETE – Verbo responsável por realizar exclusões de


registros do sistema.

8*Q.,.)'4"'4"%*4#$,4'0.(.)')*4")*"+')'"2L&$)$
#$)*2$4"+$2*D'%"'"*U*2#(.Q.+'%"+')'"?2")*(*4N

:'%'".44$H"#%.2*.%$"#%*+.4'2$4"'"+$,4&%?.%"'
*4&%?&?%'"0'4*")$",$44$"Q$,&*"789:;"#'%'",$44'
+('44*"6*4&N

1. #Include 'Protheus.ch'
2. #Include 'RestFul.CH' //Necessario
utilizar a incluide do RESTFUL
3.
4. /*/-----------------------------------------
------------------
5. {Protheus.doc} WsRstExp()
6. Dummy function da Classe Rest
7. Esta função é necessario pois o ADVPL
necessita de um function
8. dentro do fonte
9. Uso: WsRstExp
10.
11. @sample
12. //U_WsRstExp()
13.
14. @author Paulo Henrique Corrêa Cardoso.
15. @since 21/07/2020
16. @version 1.0
17. --------------------------------------------
-----------------/*/
18. User Function WsRstExp()
19. Return
20.
21. /*/-----------------------------------------
------------------
22. {Protheus.doc} WsRstExp()
23. Definição da Classe, propriedades e
assinatura dos métodos
24. Uso: WsRstExp
25.
26. @sample
27. //U_WsRstExp()
28.
29. @author Paulo Henrique Corrêa Cardoso.
30. @since 21/07/2020
31. @version 1.0
32. --------------------------------------------
-----------------/*/
33. WSRESTFUL WsRstExp DESCRIPTION "Serviço REST
de exemplo"
34. WSDATA param1 As STRING
35. WSDATA param2 As STRING Optional
36.
37. WSMETHOD GET DESCRIPTION "Get
Exemplo" WSSYNTAX "/WsRstExp?param1=
{valueParam1}&param2={valueParam2}"
38. WSMETHOD POST DESCRIPTION "Post
Exemplo" WSSYNTAX "/WsRstExp"
39. WSMETHOD PUT DESCRIPTION "Put
Exemplo" WSSYNTAX "/WsRstExp?param1=
{valueParam1}&param2={valueParam2}"
40. WSMETHOD DELETE DESCRIPTION "Delete
Exemplo" WSSYNTAX "/WsRstExp?param1=
{valueParam1}&param2={valueParam2}"
41.
42. END WSRESTFUL

V$"*U*2#($"'+.2'")*Q.,.2$4"'"+('44*"!"#"$%&'H",'
4*K?*,+.'")*Q.,.2$4"@"#'%Z2*&%$4"4*,)$"?2")*(*4
+$2$"$#.+.$,'(N

F2"4*-?.)'")*Q.,.2$4"'"'44.,'&?%'")$4"A"2L&$)$4
K?*"4*%J$"?&.(.R')$4N

V'")*Q.,.DJ$")'"'44.,'&?%'"&*2$4"'"4*-?.,&*
*4&%?&?%'S

!()%*+,-"[+9*%0\"]+<)^"-%(.#/0*/,1
[+8*4+%.#&.$,\"]!((21*34"[+T.,&'U\^"]03*+
[+:'&1\^"]**356"[+//'(_9*%4.$,\^

V'")*Q.,.DJ$")$"2L&$)$"&*2$4"'"4*-?.,&*"*4&%?&?%'S

!()%*+,-7[+9*%0\"]+<)^"]89%#203#3)
[`?*%a:'%24\^"]03*+03#3)
[:'&1:'%24\^"]+%3-%#03#3)
[b*')*%:'%24\^"!(#%(*:95"[346*4&c?(\

Nome Tipo Descrição

cVerb – PUT, POST, GET ou DELET

ID para diferenciar e
possibilitar a criação de
cId Caracter
métodos que utilizam
verbos http repetidos

cDescription Caracter Descrição do método RES

Sintaxe HTTP da chamada


REST. Esta informação é
cSintax Caracter
utilizada apenas para
documentação do REST.

Definição do endpoint que


irá acionar aquele método.

*Pode conter agrupamento


cPath Caracter
o nome da classe e os
pathparms. (A partir da
release 12.1.23 da lib, em
jan./2019).

Valor “v1” para sinalizar qu


o método utiliza o padrão
cTTalkVersion Caracter
de mensagem de erro do
TTALK.

Indica os parâmetros,
separados por vírgulas, qu
este método receberá via
QueryString.
QueryParms –
O parâmetros indicados
aqui devem ser
declarados
como WSDATA.

Indica os parâmetros,
separados por vírgulas, qu
PathParms – este método receberá via
path, ou seja, como parte
da URL.

Indica os parâmetros,
separados por vírgulas, qu
HeaderParms –
este método receberá via
Header na requisição HTTP

Indica o nome da classe, d


WsRestFul Caracter serviço, que o método atu
pertence.

7-$%'"5'2$4"+$2*D'%"'")*Q.,.%"$4"2L&$)$4"($-$
'0'.U$")$"+P).-$"',&*%.$%S

1. /*/-----------------------------------------
------------------
2. {Protheus.doc} GET
3. Get de Exemplo - Método utilizado para
consultas
4. Uso: WsRstExp
5. @sample
6. //GET / WsRstExp
7. @author Paulo Henrique Corrêa Cardoso.
8. @since 21/07/2020
9. @version 1.0
10. --------------------------------------------
-----------------/*/
11. WSMETHOD GET WSRECEIVE param1, param2
WSSERVICE WsRstExp
12. Local lRet := .T. // Recebe
o Retorno
13. Local oJsonRet := NIL // Recebe
o JSON de Saida
14.
15. /*
16.
17. Trecho com a sua codificação
18.
19. */
20.
21. // Monta Objeto JSON de retorno
22. oJsonRet := NIL
23. oJsonRet := JsonObject():new()
24.
25. oJsonRet['Propriedade1'] :=
EncodeUTF8("Retorno 1", "cp1252")
26. oJsonRet['Propriedade2'] := 10
27. oJsonRet['Propriedade3'] := .T.
28.
29. // Devolve o retorno para o Rest
30. ::SetResponse(oJsonRet:toJSON())
31.
32. Return lRet
33.
34.
35. /*/-----------------------------------------
------------------
36. {Protheus.doc} POST
37. Post de Exemplo - Método utilizado para
inclusões
38. Uso: WsRstExp
39. @sample
40. //POST/ WsRstExp
41. @author Paulo Henrique Corrêa Cardoso.
42. @since 21/07/2020
43. @version 1.0
44. --------------------------------------------
-----------------/*/
45. WSMETHOD POST WSRECEIVE nullparam WSSERVICE
WsRstExp
46. Local lRet := .T. // Recebe
o Retorno
47. Local cBody := '' // Recebe
o conteudo do Rest
48. Local oJson := NIL // Recebe
o JSON de Entrada
49. Local oJsonRet := NIL // Recebe
o JSON de Saida
50.
51. // Pega o conteudo JSON da transação Rest
52. cBody := ::GetContent()
53. ::SetContentType("application/json")
54.
55. oJson := JsonObject():new()
56. oJson:fromJson(cBody)
57.
58. /*
59.
60. Trecho com a sua codificação
61.
62. */
63.
64. // Monta Objeto JSON de retorno
65. oJsonRet := NIL
66. oJsonRet := JsonObject():new()
67.
68. oJsonRet['Propriedade1'] :=
EncodeUTF8("Retorno 1", "cp1252")
69. oJsonRet['Propriedade2'] := 10
70. oJsonRet['Propriedade3'] := .T.
71.
72. // Devolve o retorno para o Rest
73. ::SetResponse(oJsonRet:toJSON())
74.
75. FreeObj(oJsonRet)
76. FreeObj(oJson)
77.
78. Return lRet
79.
80. /*/-----------------------------------------
------------------
81. {Protheus.doc} PUT
82. PUT de Exemplo - Método utilizado para
Alterações
83. Uso: WsRstExp
84. @sample
85. //PUT / WsRstExp
86. @author Paulo Henrique Corrêa Cardoso.
87. @since 21/07/2020
88. @version 1.0
89. --------------------------------------------
-----------------/*/
90. WSMETHOD PUT WSRECEIVE param1, param2
WSSERVICE WsRstExp
91. Local lRet := .T. // Recebe
o Retorno
92. Local cBody := '' // Recebe
o conteudo do Rest
93. Local oJson := NIL // Recebe
o JSON de Entrada
94. Local oJsonRet := NIL // Recebe
o JSON de Saida
95.
96. // Pega o conteudo JSON da transação Rest
97. cBody := ::GetContent()
98. ::SetContentType("application/json")
99.
100. oJson := JsonObject():new()
101. oJson:fromJson(cBody)
102.
103. /*
104.
105. Trecho com a sua codificação
106.
107. */
108.
109. // Monta Objeto JSON de retorno
110. oJsonRet := NIL
111. oJsonRet := JsonObject():new()
112.
113. oJsonRet['Propriedade1'] :=
EncodeUTF8("Retorno 1", "cp1252")
114. oJsonRet['Propriedade2'] := 10
115. oJsonRet['Propriedade3'] := .T.
116.
117. // Devolve o retorno para o Rest
118. ::SetResponse(oJsonRet:toJSON())
119.
120. FreeObj(oJsonRet)
121. FreeObj(oJson)
122.
123. Return lRet
124.
125. /*/-----------------------------------------
------------------
126. {Protheus.doc} DELETE
127. DELETE de Exemplo - Método utilizado para
exclusões
128. Uso: WsRstExp
129. @sample
130. //DELETE / WsRstExp
131. @author Paulo Henrique Corrêa Cardoso.
132. @since 21/07/2020
133. @version 1.0
134. --------------------------------------------
-----------------/*/
135. WSMETHOD DELETE WSRECEIVE param1, param2
WSSERVICE WsRstExp
136. Local lRet := .T. // Recebe
o Retorno
137. Local cBody := '' // Recebe
o conteudo do Rest
138. Local oJson := NIL // Recebe
o JSON de Entrada
139. Local oJsonRet := NIL // Recebe
o JSON de Saida
140.
141. // Pega o conteudo JSON da transação Rest
142. cBody := ::GetContent()
143. ::SetContentType("application/json")
144.
145. oJson := JsonObject():new()
146. oJson:fromJson(cBody)
147.
148. /*
149.
150. Trecho com a sua codificação
151.
152. */
153.
154. // Monta Objeto JSON de retorno
155. oJsonRet := NIL
156. oJsonRet := JsonObject():new()
157.
158. oJsonRet['Propriedade1'] :=
EncodeUTF8("Retorno 1", "cp1252")
159. oJsonRet['Propriedade2'] := 10
160. oJsonRet['Propriedade3'] := .T.
161.
162. // Devolve o retorno para o Rest
163. ::SetResponse(oJsonRet:toJSON())
164.
165. FreeObj(oJsonRet)
166. FreeObj(oJson)
167.
168. Return lRet

V$4"*U*2#($4"'+.2'"?&.(.R*."'"X('44*"B4$,!0W*+&"#'%'
&%'&'%")')$4")$"&.#$"BT!VH"+$2"'"2*42'"L"#$44.5*(
&%',4Q$%2'%"$"BT!V"#'%'"$0W*&$"*"5.+*d5*%4'N

O?.&$".2#$%&',&*

:'%'"%*'(.R'%"$4"%*&$%,$4"#'%'"$"3*04*%5.+*"6*4&H
&*2$4")$.4"2L&$)$4"K?*"#%*+.4'2$4"?&.(.R'%N

F2"+'4$")*"4?+*44$"*"5'2$4")*5$(5*%"?2"BT!V"+$2
+$,&*e)$H"?&.(.R'2$4"$
2L&$)$";;(<$#<"'=>"<?@AB(,1CDEN

F2"+'4$")*"Q'(1'"?&.(.R'2$4"$
2L&$)$"(<$#<"$:FGH$?A($F$G"%II=CEJ
%>K=L<9*:M?@A)<>"FN<O7L<7%II=CDJ7@K'PQRQDEEN
!04*%5'DJ$"S"?&.(.R$"'"Q?,DJ$"%>K=L<9*:M?@*<&$=DJ
@K'PQRQDEH"#'%'"4?#%.2.%"#%$0(*2'4")*"'+*,&?'DJ$
'$"?&.(.R'%"$"*,5.$")*"&*U&$4"#*('"3T"6*4&N

V$4"+'4$4")*"Q'(1'"#$)*2$4"?&.(.R'%"'"&'0*('"'0'.U$
#'%'")*Q.,.%"$"T&'&?4F%%$S

Status HTTP Descrição

422 Exceções de negócio

400 Requisição Mal Formada

401 Requisição Requer


Autenticação

403 Requisição Negada

404 Recurso não Encontrado

405 Método não Permitido

408 Tempo esgotado para a


requisição

413 Requisição excede o


tamanho máximo
permitido

415 Tipo de mídia inválida


(falta de informar o
content-type correto, ver
JSON)

429 Requisição excede a


quantidade máxima de
chamadas permitidas à
API

500 Erro de servidor

"

9$?")*.U'%"'K?."'")$+?2*,&'DJ$")'"/!/9T"+$2"2'.4
'(-?2'4".,Q$%2'DE*4".2#$%&',&*4"4$0%*"&$)'"'
*4&%?&?%'")$"6FT/N

1&&#4S>>&),N&$&54N+$2>).4#('a>Q%'2*M$%_>6FT/f789:
;

1&&#4S>>&),N&$&54N+$2>#'-*4>5.*M#'-*N'+&.$,G
#'-*<)ghi@jkAlj

"

m".44$"#*44$'(N

F4#*%$"K?*"'W?)*"2?.&$"5$+n4N

"

7&L"'"#%PU.2'ooo
!"#$%&'()*%&+

  

!,&'(&-(.."+

Carregando...

Relacionado

:%$-%'2'DJ$"!%.*,&')'"' F4+$#$")*"5'%.C5*.4
!0W*&$4"d"789:; 789:;
@t>qh>@q@q ph>qh>@q@q
F2"v7)5#(v F2"v7)5#(v

!"K?*"#$)*2$4"*4#*%'%
)'"&*+,$($-.'G
@p>qh>@q@q
F2"vX?%.$4.)')*4v

T$0%*"$"7?&$%

:'?($"b*,%.K?*"X$%%n'
X'%)$4$
!"#$%$&'(!')(

7,'(.4&'")*"4.4&*2'4H"Q$%2')$"#*('
c'+?()')*")*"<,Q$%2C&.+'"*"7)2.,.4&%'DJ$
:'?(.4&'"N"X$2"2'.4")*"pq"',$4")*
*U#*%.n,+.'"*2"T`;"*").5*%4'4"(.,-?'-*,4
)*"#%$-%'2'DJ$N"7)2.,.4&%')$%"*
)*4*,5$(5*)$%")*"F6:"/!/9T":%$&1*?4N

# $

8*.U*"?2'"%*4#$4&'"

Digite seu comentário aqui...

Pesquisar

:$4&4"%*+*,&*4
% B!<VI4"T`;"r"9'2$4"'#%*,)*%"G

% /*+,$($-.'"*"'":',)*2.'

% O$)*($"F,&.)')*"6*('+.$,'2*,&$dT`;

% X$,4?(&'4"T`;"r"9'2$4"'#%*,)*%ooo

% O'+1.,*";*'%,.,-"s"<,&*(.-*,+.'"7%&.Y+.'(

X$2*,&C%.$4
!"#$%&'()*+,#(&-%**."&-"*/%0%"*2"T+%.#&"#'%'
%*$%-',.R'%>%*+%.'%"=,).+*4",$"O.+%$4$Q&"T`;"T*%5*%

12"*2"T+%.#&"#'%'"%*$%-',.R'%>%*+%.'%"=,).+*4",$
O.+%$4$Q&"T`;"T*%5*%

!"#$%&'()*+,#(&-%**."&-"*/%0%"*2"X$,4?(&'4"T`;
r"9'2$4"'#%*,)*%ooo

-(0"*"*2"X$,4?(&'4"T`;"r"9'2$4"'#%*,)*%ooo

!"#$%&'()*+,#(&-%**."&-"*/%0%"*2";P-.+'")*
#%$-%'2'DJ$H"?2"+$,1*+.2*,&$"#'%'"'"5.)'N

7%K?.5$4
% )*R*20%$"@q@q

% '-$4&$"@q@q

% W?(1$"@q@q

% $?&?0%$"@qpt

X'&*-$%.'4
% 7)5#(

% u',+$")*"8')$4

% X?%.$4.)')*4

% 8.+'4

% ;P-.+'

&

Você também pode gostar