Versão atual:

Error 500 - API REST

Pessoal, bom dia. Tenho uma API REST que me retorna um certo registro após informado um parâmetro em sua URL, os registros retornados são de uma tabela chamada ZZ0 (tabela customizada) nessa tabela guardamos informações de anexos amarrados por um identificador onde o mesmo faz referencia a cotações, basicamente temos a seguinte estrutura na tabela.

ZZ0FILIAL NOT NULL CHAR(2)ZZ0_NUM NOT NULL CHAR(6)ZZ0_EXTENS NOT NULL CHAR(10)ZZ0_ENCODE BLOBZZ0_NOME NOT NULL CHAR(100) ZZ0_USERGI NOT NULL CHAR(17)D_E_L_E_T NOT NULL CHAR(1)RE_C_N_O NOT NULL NUMBERRE_C_D_E_L NOT NULL NUMBER

A minha função faz o seguinte, ao informar um número ZZ0_NUM ela retorna dados como o próprio número e o ZZ0_NOME, até ai tudo bem, ele retorna corretamente os dados. O problema ocorre quando tento retornar as informações do campo ZZ0_ENCODE, onde os registros são do tipo BLOB e armazena o BASE64 dos meus arquivos que foram convertidos.

Abaixo segue estrutura da API.

WSMETHOD GET GetById PATHPARAM id WSSERVICE MeuRest
    Local lPost    := .T.
    Local oResponse := JsonObject():New()

    Local aTarefas := {}

    ::SetContentType("application/json")

    cAlias := GetNextAlias()
    cQuery := " SELECT "
    cQuery += "    ZZ0.ZZ0_NUM, "
    cQuery += "    ZZ0.ZZ0_NOME "
    cQuery += " FROM " + RetSqlName("ZZ0") + " ZZ0 "
    cQuery += " WHERE "
    cQuery += "     ZZ0.D_E_L_E_T_ = ' ' AND ZZ0.ZZ0_NUM = '"+::id+"' "


    MPSysOpenQuery(cQuery, cAlias)
    If (cAlias)->(!Eof())
        lPost := .T.
        oResponse['code'] := (cAlias)->ZZ0_NUM
        oResponse['description'] := (cAlias)->ZZ0_NOME
        cResponse := FWJsonSerialize(oResponse, .F., .F., .T.)
        ::SetResponse(cResponse)
    Else
        lPost := .F.
        cRetorno := "Cotacao não encontrado!"
        SetRestFault(404, cRetorno)
    EndIf
    (cAlias)->(DbCloseArea())
Return lPost

O retorno abaixo ilustra que a API está funcionando com os campos mencionados acima. sucesso.JPG

Após a troca do campo ZZ0_NOME pelo ZZ0_ENCODE é mostrado o seguinte erro.

Abaixo alteração no fonte:

WSMETHOD GET GetById PATHPARAM id WSSERVICE MeuRest
    Local lPost    := .T.
    Local oResponse := JsonObject():New()

    Local aTarefas := {}

    ::SetContentType("application/json")

    cAlias := GetNextAlias()
    cQuery := " SELECT "
    cQuery += "    ZZ0.ZZ0_NUM, "
    cQuery += "    ZZ0.ZZ0_ENCODE "
    cQuery += " FROM " + RetSqlName("ZZ0") + " ZZ0 "
    cQuery += " WHERE "
    cQuery += "     ZZ0.D_E_L_E_T_ = ' ' AND ZZ0.ZZ0_NUM = '"+::id+"' "


    MPSysOpenQuery(cQuery, cAlias)
    If (cAlias)->(!Eof())
        lPost := .T.
        oResponse['code'] := (cAlias)->ZZ0_NUM
        oResponse['description'] := (cAlias)->ZZ0_ENCODE
        cResponse := FWJsonSerialize(oResponse, .F., .F., .T.)
        ::SetResponse(cResponse)
    Else
        lPost := .F.
        cRetorno := "Cotacao não encontrado!"
        SetRestFault(404, cRetorno)
    EndIf
    (cAlias)->(DbCloseArea())
Return lPost

Versão (1):

Ver a versão formatada

Error 500 - API REST

Comentário

new question