Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2015
igentile igentile is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 2
Poder: 0
igentile Va por buen camino
TjsonObject como parámetro SERVICIO REST

Hola a todos!

Hace unos días me asignaron un proyecto en mi trabajo en el cual debo crear un servicio REST para que consuma otra empresa externa. He leído mucha teoría y documentación y la verdad que pese a ser novato en el tema me he desenvuelto bastante bien pero actualmente estoy trabado ya que necesito recibir como parámetro un TjsonObject en uno de mis métodos públicos.

No sé como se trabaja en Delphi en estos casos, ¿se recibe un string con formato Json? ¿se recibe un objecto de tipo TjsonObject? en la web encontré muchos ejemplos en donde se recibe uno o varios parámetros de tipo integer o string que luego en la URI son separados con "/" pero ningún ejemplo en donde se pase un objeto como parámetro.

He probado definir mi método esperando como parámetro un TjsonObject pero tengo problemas para invocarlo desde REST debugger ya que no me reconoce el parámetro enviado como un formato Tjson válido.

Qué me recomiendan hacer en estos casos? Cómo se aconseja trabajarlo?

Muchas gracias!!

p/d: Utilizo Delphi XE6
Responder Con Cita
  #2  
Antiguo 20-10-2015
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Hola, Bienvenid@ al club...

Debes crear el parámetro como TRESTRequestParameter y agregarlo a la lista (propiedad) Params del TRESTRequest, en su propiedad Value enviar el parametro como un objeto serializado en JSON... la petición debe hacerse por medio del método POST, cosa que se configura en la propiedad Method como rmPOST y listo.

Es bastante curioso porque precisamente hoy, estaba pensando en crear un articulo para este tema.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 20-10-2015
igentile igentile is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 2
Poder: 0
igentile Va por buen camino
Gracias por tu respuesta Jhonny!!

Lo que exponés entiendo que es para hacer la llamada desde el lado cliente, pero ¿cómo defino el método en el lado servidor? ¿El parámetro tiene que ser un TjsonObject?

A continuación copio la definición de mi método para explicar mejor lo que quiero resolver:

Código Delphi [-]
{$METHODINFO ON}
  API = class(TComponent)
  private
  public
    function UpdateMundo(param: TJSONObject):TJSONObject; //post --> crea recurso
    function AcceptMundo(param: TJSONObject):TJSONObject; //put --> modifica recurso
    function Mundo(key: integer):TJSONObject; //get --> obtiene recurso
  end;
{$METHODINFO OFF}

Sería genial si pudieras crear ese artículo, sería de gran ayuda para todos los que estamos iniciando en el tema!

Gracias!!
Responder Con Cita
  #4  
Antiguo 20-10-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No comentas qué tipo de servidor
Si estás pensando en generar un Servidor windows, puedes buscar por internert y encontrarás varios ejemplos de cómo hacerlo (en Español y en Inglés). Incluso en la docwiki de embarcadero puedes encontrar informaciópn completa y paso a paso. Por ejemplo:

Tutorial: Using a REST DataSnap Server with an Application and FireDAC
En este documento explica la utilizaciñon de JSON

JSON Types for Server Methods in DataSnap 2010

Otro enfoque sería hacerlo en PHP y consummirlo igualmente desde un cliente (delphi o no), de esta manera.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 20-10-2015
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por igentile Ver Mensaje
Gracias por tu respuesta Jhonny!!

Lo que exponés entiendo que es para hacer la llamada desde el lado cliente, pero ¿cómo defino el método en el lado servidor? ¿El parámetro tiene que ser un TjsonObject?

A continuación copio la definición de mi método para explicar mejor lo que quiero resolver:

Código Delphi [-]
{$METHODINFO ON}
  API = class(TComponent)
  private
  public
    function UpdateMundo(param: TJSONObject):TJSONObject; //post --> crea recurso
    function AcceptMundo(param: TJSONObject):TJSONObject; //put --> modifica recurso
    function Mundo(key: integer):TJSONObject; //get --> obtiene recurso
  end;
{$METHODINFO OFF}

Sería genial si pudieras crear ese artículo, sería de gran ayuda para todos los que estamos iniciando en el tema!

Gracias!!
Hacerlo como índicas está bien, sería cuestión de usar el TJSONMarshal para "deserializar" (no estoy seguro de su traducción correcta) el objeto y usarlo como quieres, pero yo he notado que desde alguna versión hacia acá de Delphi, puedes usar la clase como tal en el parámetro y él solo se encarga de serializar yy hacer el proceso inverso necesario.

Por otro lado es bueno que veas los artículos que menciona Neftalí, apuesto que te darán ideas de cómo reutilizar muchas herramientas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 20-10-2015 a las 17:19:16. Razón: Ortografía
Responder Con Cita
  #6  
Antiguo 06-11-2015
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, lo dicho, quizá sirva de algo el siguiente tema al respecto http://purodelphi.com/2015/10/28/no-...jsonunmarshal/
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
PayPal usando REST oesqueda Delphi para la web 5 02-12-2014 01:36:41
Rest roman La Taberna 11 30-07-2014 17:52:00
Como consumir Rest Service que retorna cadena en formato JSON desde delphi 7 JuanPa1 Internet 0 20-12-2013 19:07:20
REST, Marshaling y \ iuqrul Providers 1 08-11-2013 11:51:33
Como arrancar o parara un servicio en funcion de otro servicio ?? QuarkBcn API de Windows 12 15-06-2011 15:46:11


La franja horaria es GMT +2. Ahora son las 00:39:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi