Bom dia, como implementar verbos duplicados no REST do Protheus? vi na documentação que é possível usando o PATH porém tentei implementar e retorna o erro 404.
Bom dia, como implementar verbos duplicados no REST do Protheus? vi na documentação que é possível usando o PATH porém tentei implementar e retorna o erro 404.
Boa tarde Renan, estou implementando os métodos da seguinte forma:
//declaração dos métodos
WSMETHOD POST ALTTICKET DESCRIPTION "Altera um ticket" WSSYNTAX "/sgp/api/v1/IB3SGPTWC/{IDTICKET}" PATH "/sgp/api/v1/IB3SGPTWC/{IDTICKET}" TTALK "v1"
WSMETHOD POST ALTITEM DESCRIPTION "Altera um item de um ticket" WSSYNTAX "/sgp/api/v1/IB3SGPTWC/{IDTICKET}/ITEM/{IDITEM}" PATH "/sgp/api/v1/IB3SGPTWC/{IDTICKET}/ITEM/{ORDEM}" TTALK "v1"
WSMETHOD POST ALTTICKET WSSERVICE IB3SGPTWC
::SetResponse('{"name":"IB3SGPTWC", "method":"POST ALTTICKET"}')
Return .T.
WSMETHOD POST ALTITEM WSSERVICE IB3SGPTWC
::SetResponse('{"name":"IB3SGPTWC", "method":"POST ALTITEM"}')
Return .T.
para resolver a falha da chamada acima, a chamada deve ocorrer da seguinte forma:
Boa Tarde William, tenta da seguinte forma : WSMETHOD POST ALTTICKET PATHPARAM IDTICKET WSSERVICE IB3SGPTWC e WSMETHOD POST ALTITEM PATHPARAM ORDEM WSSERVICE IB3SGPTWC.
Isso porque o erro 404 senão me falha a memória é que não encontrou, como você adicionou o path de parâmetro na declaração do post, faltou adicionar no método, bom acho que é isso. Atenciosamente,
— Douglas Bichir 08 de Jan de 2020Boa tarde Douglas, testei dessa forma tbm e deu o mesmo erro
— Willian Santos 08 de Jan de 2020William, se você criar somente um post sem ter o verbo duplicado, ele funciona? Pois se ocorrer o mesmo erro, pelo menos identifica que o problema não é na utilização de mais de um verbo. Um ponto a se atentar "/sgp/api/v1/IB3SGPTWC" na url vejo que mudou o caminho tirando o rest que é informado como padrão de configuração na maioria dos tutorias de rest do protheus, no seu appserver.ini, realmente esta configuração foi alterada? Exemplo: Normalmente vêm assim: [HTTPURI]URL=/rest
Foi alterado para assim: [HTTPURI] URL=/
— Douglas Bichir 08 de Jan de 2020Última vez que pesquisei isso tinha uma melhoria pra sair e isto poder ser feito, porém até agora não é possível declarar mais de um verbo. O que faço é controlar pelo aParms mesmo as rotas.
att.
— VINICIUS GATI 21 de Jan de 2020Boa tarde Vinicius, conseguimos declarar métodos duplicados, nosso erro é que a chamada do PATH é case-sensitive ou seja se no PATH estiver declarado em caixa alta e chamar em caixa baixa, o servidor não encontra o recurso.
— Willian Santos 21 de Jan de 2020Boa tarde,
Conforme documentação, basta colocar o path e tbm o WSSSYNTAX
WSMETHOD GET DESCRIPTION "Exemplo de retorno de entidade(s)" WSSYNTAX "/sample || /sample/{id}"
;-)
Boa tarde William, como você fez? Como fez consumiu? Como você configurou?
— Daniel Mendes 08 de Jan de 2020fiz conforme essa documentação -> https://tdn.totvs.com/pages/viewpage.action?pageId=75269436 Porém com os métodos PUT, o método GET retorna certinho, mas o PUT retorna o 404
— Willian Santos 08 de Jan de 2020O que pode influenciar é o restful.ch, ele precisa estar atualizado, verifique isso, atualizei todos os seus includes antes de compilar esse programa e veja se o resultado será o mesmo.
— Daniel Mendes 08 de Jan de 2020o include foi atualizado, antes da atualização ele não permitia nem compilar o fonte
— Willian Santos 08 de Jan de 2020