Absolutamente de acuerdo.

[email protected]


El 18 de junio de 2014, 20:42, Martín Salías <[email protected]>
escribió:

> Hola, Ale.
>
> Para mi tratar de hacerlo a través del navegador tiene patas cortas. REST
> o incluso un API Json que no sea del todo REST, no es fácil manejar desde
> dentro del HTML. Hay operaciones que el navegador no hace de manera pura
> (POST, DELETE, etc) porque salen desde un formulario y están pensadas para
> un uso interactivo. Los servicios tienen otros requerimientos.
>
> Esa diferencia es la que implementó Pablo en IFox, casualmente, para que
> puedas hacerlo sin navegador.
>
> Abrazo,
>
> ---
> Martín Salías
> <http://CodeAndBeyond.org>
> <http://CodeAndBeyond.org>
>
>
> 2014-06-18 16:56 GMT-04:00 Alejandro Paciotti <
> [email protected]>:
>
>> Bueno, seguramente la opción"ma mejor" es la de Pablo Pioli, o sino,
>> podrían intentar aprender Angular, Node.js y hacer un ejecutable que reciba
>> parámetros para que postee en el servicio rest.
>>
>> O bien hacerlo desde Fox...
>>
>> Esto es solo una idea que tuve, no tuve tiempo de probarla...
>>
>> LOCAL lcUserName, lcPassword
>>
>> *lcUserName* = 'alguien'
>> *lcPassword* = 'supersecreta'
>>
>> TEXT TO PostearEnUnServicioREST TEXTMERGE NOSHOW PRETEXT 2
>> <html ng-app='unaAplicacion'>
>>  <head>
>> <title></title>
>> <script src='
>> http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.16/angular.min.js
>> '></script>
>>  </head>
>> <body ng-controller='unControlador'>
>>
>> <script>
>>  var App = angular.module('unaAplicacion', []);
>>
>> App.controller('unControlador', function ($scope, $http, $window) {
>>  $scope.user = {username: '<<*lcUsername*>>', password: '<<*lcPassword*
>> >>'};
>>
>> $scope.submit = function () {
>>     $http
>>       .post('http://localhost:3000/api/clientes/login', $scope.user)
>>       .success(function (data, status, headers, config) {
>>
>> *                      // Acá recibiríamos estos objetos si el usuario y
>> psw están ok.*
>>
>>
>>       }
>>       .error(function (data, status, headers, config) {
>>                     *   // Por acá vendría si está todo mal.*
>>
>>       }
>> </script>
>> </body>
>>  </html>
>> ENDTEXT
>>
>> *
>>
>> STRTOFILE(PostearEnUnServicioREST, 'postear.html')
>>
>> Y después, automatizar un navegador para que abra el postear.html.
>>
>> De todas formas, creo que la idea de consumir un servicio REST desde FOX
>> quedó contestada.
>>
>> *Abrazo de gol sobre la hora!*
>>
>>
>> [email protected]
>>
>>
>> El 18 de junio de 2014, 16:52, Martín Salías <[email protected]>
>> escribió:
>>
>>>  ¿Al final lo hiciste? ¡Sos un grosso!
>>>
>>> Hay tienen el canal más directo, entonces. :)
>>>
>>> Abrazote,
>>>
>>> ---
>>> Martín Salías
>>> <http://CodeAndBeyond.org>
>>>  <http://CodeAndBeyond.org>
>>>
>>>
>>> 2014-06-18 15:02 GMT-04:00 Pablo Pioli <[email protected]>:
>>>
>>>>  A lo que Martin explica tan bien agregaria 2 cosas.
>>>>
>>>>
>>>> 1. Lo de .../api/clientes/nuevo
>>>> no es justamente REST estricto porque generalemente viene de otro lado,
>>>> del MVC (el nuevo es el metodo del controller). Justamente Microsoft tiene
>>>> ASP.NET MVC y WebAPI (para arquitecturas REST) para que eligas como lo
>>>> quieras implementar.
>>>>
>>>> 2. Si a alguien se le ocurre hacerlo con iFox se puede, si bien fue
>>>> pensado para hacer POST de formularios le agregue la posibilidad de cambiar
>>>> el content-type y el metodo (post, put, etc).
>>>> No queda de lo mas lindo porque es como un parche arriba pero funciona.
>>>>
>>>> Pablo Pioli
>>>>
>>>> El 18/06/2014 01:57 p.m., Martín Salías escribió:
>>>>
>>>>  Hola, Ale.
>>>>
>>>>  La explicación está bien, con una salvedad (si queremos que el
>>>> servicio sea REST):
>>>>
>>>>  La URI para el saldo de clientes de tu ejemplo, siempre debería ser:
>>>>
>>>> http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/
>>>> <http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/json>
>>>>
>>>>  Porque ese es el recurso. Si quisieras los datos de un cliente en
>>>> particular, sería algo como:
>>>>  http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/3324/
>>>> <http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/json>
>>>>
>>>>  Cuando vos (desde tu aplicación cliente) hacés un GET a esas URI, en
>>>> el header le vas a decir el Content Type que querés (JSon o XML, por
>>>> ejemplo) y el servicio te va a devolver uno u otro, o decirte que no lo
>>>> soporta
>>>>
>>>>  De la misma manera, cuando querés dar de alta un cliente, por
>>>> ejemplo, hacés un POST a:
>>>>  http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/
>>>> <http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/json>
>>>>
>>>>  ...no a "clientes/nuevo". El response de este POST, si creo un nuevo
>>>> elemento, debería ser 201 (no 200), y darte la URI de la nueva entidad en
>>>> Location, por ejemplo:
>>>>
>>>>  http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/
>>>> <http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/json>
>>>> 7889
>>>>
>>>>  ¿Se entiende la diferencia?
>>>>
>>>>  Igual es bueno aclarar que esto es un servicio REST correcto, y si lo
>>>> que tenés es que consumir un servicio que "dice" ser REST, muchas veces
>>>> nada de esto aplica, y tenés que ver qué es lo que hay que hacer (que es lo
>>>> que no deberías si fuera RESTful).
>>>>
>>>>  Saludos,
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ---
>>>> Martín Salías
>>>>  <http://CodeAndBeyond.org>
>>>>
>>>>
>>>> 2014-06-17 13:10 GMT-04:00 Alejandro Paciotti <
>>>> [email protected]>:
>>>>
>>>>> Dando por sentado que los dos llamamos a esto
>>>>> <http://eamodeorubio.wordpress.com/2010/07/26/servicios-web-2-%C2%BFque-es-rest/>
>>>>>  un
>>>>> servicio *REST*, la mayor complejidad podría estar dada por la
>>>>> autenticación.
>>>>>
>>>>>  Hace algún tiempo usé con gran satisfacción unas librerías que hizo
>>>>> un colistero, Pablo Pioli <http://www.coliseosoftware.com.ar/>, que
>>>>> me permitía abrir una página y bajarla a archivo de texto.
>>>>>
>>>>>  Luego de identificarte en el sitio donde debes consumir el servicio *REST
>>>>> *tenés que tener conocimiento de como está hecho para poder
>>>>> consumirlo.
>>>>>
>>>>>  Un ejemplo podría ser:
>>>>>
>>>>>  Supongamos que alguien pensó que para saber el saldo de los clientes
>>>>> el acceso fuese:
>>>>>
>>>>>
>>>>> http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/json
>>>>>
>>>>>  Entonces, la respuesta que obtendrías sería un json.
>>>>>
>>>>>  O bien:
>>>>>
>>>>>
>>>>> http://elsitiodetuproveedordeserviciorest.com.ar/api/clientes/saldoclientes/xml
>>>>>
>>>>>  Entonces la respuesta sería un XML.
>>>>>
>>>>>
>>>>>  No he probado la aplicación de Pablo usando POST, pero también
>>>>> podría haber algo que puedas consumir desde fox, como por ejemplo:
>>>>>
>>>>>
>>>>> http://elsitiodetuproveedordeserviciorest.com.ar/api/potencialesclientes/nuevo
>>>>> (y los datos deberían ir por POST)
>>>>>
>>>>>  Espero haber sido claro.
>>>>>
>>>>>  Abrazo.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> [email protected]
>>>>>
>>>>>
>>>>> El 17 de junio de 2014, 11:29, Alejandro Delgado Jordan <
>>>>> [email protected]> escribió:
>>>>>
>>>>>   Alejandro, Para Consumir desde Visual FoxPro
>>>>>>
>>>>>>
>>>>>>
>>>>>> *De:* [email protected] [mailto:[email protected]] *En nombre de *Alejandro
>>>>>> Paciotti
>>>>>> *Enviado el:* lunes, 16 de junio de 2014 17:12
>>>>>> *Para:* GUFA List Member
>>>>>> *Asunto:* [GUFA] Servicio REST
>>>>>>
>>>>>>
>>>>>>
>>>>>> Consumir con que?
>>>>>>
>>>>>>
>>>>>>  [email protected]
>>>>>>
>>>>>>
>>>>>>
>>>>>> El 16 de junio de 2014, 17:09, Alejandro Delgado Jordan <
>>>>>> [email protected]> escribió:
>>>>>>
>>>>>> Hola:
>>>>>>
>>>>>> Alguien sabe donde puedo sacar info y/o ejemplos de como consumir un
>>>>>> servicio REST.-
>>>>>>
>>>>>> Gracias
>>>>>>
>>>>>> Alejandro
>>>>>>
>>>>>>
>>>>>>  ------------------------------
>>>>>>
>>>>>> *Por favor, no imprima este mensaje a no ser que sea absolutamente
>>>>>> necesario. Todos somos responsables por el cuidado del medio ambiente.*
>>>>>>
>>>>>>
>>>>>> *Este e-mail, y cualquier archivo adjunto, fue escrito sólo para la/s
>>>>>> persona/s o ente/s al que está dirigido, pudiendo contener información
>>>>>> confidencial o privilegiada. Está prohibido revisar, distribuir, copiar,
>>>>>> imprimir o hacer cualquier otro uso de este e-mail y sus adjuntos por
>>>>>> personas o entidades distintas del destinatario. Si recibió este e-mail 
>>>>>> por
>>>>>> error, por favor contacte inmediatamente al emisor y destruya el 
>>>>>> material. *
>>>>>> *Según la legislación local vigente, las comunicaciones electrónicas,
>>>>>> incluyendo el correo electrónico, pueden ser escaneados por nuestros
>>>>>> sistemas para los fines de seguridad de la información y la evaluación de
>>>>>> la conformidad con la política interna. El emisor no acepta 
>>>>>> responsabilidad
>>>>>> por errores u omisiones producidas ni garantiza lo transmitido por este
>>>>>> medio debido a que puede ser objeto de interpretación, alteración, 
>>>>>> demora u
>>>>>> otras anomalías.*
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------
>>>>>>
>>>>>> * Por favor, no imprima este mensaje a no ser que sea absolutamente
>>>>>> necesario. Todos somos responsables por el cuidado del medio ambiente.*
>>>>>>
>>>>>>
>>>>>> * Este e-mail, y cualquier archivo adjunto, fue escrito sólo para
>>>>>> la/s persona/s o ente/s al que está dirigido, pudiendo contener 
>>>>>> información
>>>>>> confidencial o privilegiada. Está prohibido revisar, distribuir, copiar,
>>>>>> imprimir o hacer cualquier otro uso de este e-mail y sus adjuntos por
>>>>>> personas o entidades distintas del destinatario. Si recibió este e-mail 
>>>>>> por
>>>>>> error, por favor contacte inmediatamente al emisor y destruya el 
>>>>>> material. *
>>>>>> * Según la legislación local vigente, las comunicaciones
>>>>>> electrónicas, incluyendo el correo electrónico, pueden ser escaneados por
>>>>>> nuestros sistemas para los fines de seguridad de la información y la
>>>>>> evaluación de la conformidad con la política interna. ** El emisor
>>>>>> no acepta responsabilidad por errores u omisiones producidas ni garantiza
>>>>>> lo transmitido por este medio debido a que puede ser objeto de
>>>>>> interpretación, alteración, demora u otras anomalías.*
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>

Responder a