advpl-webservicelisted
Install: claude install-skill JoniPraia/plugadvpl
# advpl-webservice — REST e SOAP no Protheus
ADVPL/TLPP suporta três famílias de Web Service:
| Família | Sintaxe | Quando usar |
|-------------------|--------------------------------------------|------------------------------------------------|
| **REST clássico** | `WSRESTFUL` + `WSMETHOD GET/POST` | Mantida pra compat; ainda OK em código existente |
| **REST tlppCore** | `@Get(endpoint=...)` em `User Function` | **Padrão moderno para novas APIs** (TLPP/AppServer 20+) |
| **SOAP** | `WSSERVICE` + `WSDATA` + `WSMETHOD` | Legado; integração com sistema que exige WSDL |
REST tlppCore **não é evolução do REST ADVPL** — é recurso novo, sem compat automática com autenticação user-based clássica nem pré-carga de banco. Cada cenário tem trade-offs.
O AppServer Protheus expõe ambos via porta HTTP configurada em `appserver.ini` (`[HTTPV11]` para REST 2.0).
### Por que TOTVS recomenda notation pra projetos novos
A TOTVS reescreveu a camada de accept REST em C++ no binário Lobo-Guará. O notation usa essa camada nova; o WSRESTFUL clássico continua na camada ADVPL antiga. Resultado documentado pela comunidade:
| Métrica | WSRESTFUL clássico | Notation (`@Get/@Post/...`) |
|---|---|---|
| **Throughput** | linha-base | **~3× mais rápido** ([Every System](https://everysys.com.br/blog/tl-rest/), [gworks](https://www.gworks.com.br/post/totvs-rest)) |
| **Verbos** | GET, POST,