Chris,

I think you will be fine using multipart/form-data with
application/octet-stream to upload the binary data from the phone to the
web service.  There is no need to base64 encode anything, that would just
increase the size and gain you nothing.  You will probably need to manually
construct your multipart payload (which could include the image plus any
JSON data you need) on the phone, and then manually deconstruct it on the
Rails end.

Also, you are 100% correct, the only sane way to do this is via HTTP to an
app server.  You obviously can't have phones making direct connections to
the mongo database. :)


--
Regards,

John Lynch
[email protected]



On Mon, Mar 10, 2014 at 7:48 PM, Chris McCann <[email protected]> wrote:

> I'm beginning to research how to put together a Rails RESTful API and app
> to handle requests from an Android app.
>
> We currently have a prototype Android app in which the author connects
> directly to a MongoDB hosted at mongolab.com via the Mongo Android driver
> using BSON.  This has worked fine for the initial proof-of-concept effort
> to push data to the DB but isn't what we need going forward.
>
> For our next phase of development I'd like to build a RESTful Rails API
> that the Android app can use to push data and get a response back.  The
> Rails app will also allow display and querying the data.
>
> In addition to simple JSON text we'd like to be able to push an image
> taken by the camera on the Android device.  The image is currently sent as
> a MongoDB binary data type.
>
> I've done a fair amount of Googling on the topic but am curious what the
> community has to say on this subject.  The original demo author is
> completely wrapped around the axle about the "efficiency" of sending the
> image data back over HTTP, insisting that it must be done the way we
> currently do it, as BSON over whatever type of connection the Mongo driver
> creates (he is neither a web developer nor a Java programmer and had not
> seen Rails before I built the demo backend last week).  Is gzipped
> Base64-encoded text just as efficient for hauling the images?
>
> The API will initially just support Android with iOS coming shortly
> thereafter.  The choice of MongoDB was purely for expediency (and before I
> arrived on the scene) and will most likely change.  The mobile apps will be
> ignorant of the backend persistence mechanism so I can design it however I
> like.
>
> Does anyone have opinions on the most appropriate way to bring the images
> back via the API?  From the perspective of the Android app in terms of
> bandwidth, speed, and power consumption, is one way better than another?
>
> Are there any Rails API and Android gotchas I should be aware of?  I'm not
> an Android dev (yet) but I plan to learn enough to mock this up on my own.
>  Are there any Android references or tutorials that folks find particularly
> good?
>
> Many thanks in advance.
>
> Chris
>
>
>  --
> --
> SD Ruby mailing list
> [email protected]
> http://groups.google.com/group/sdruby
> ---
> You received this message because you are subscribed to the Google Groups
> "SD Ruby" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby
--- 
You received this message because you are subscribed to the Google Groups "SD 
Ruby" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to