recherche

Maison  >  Questions et réponses  >  le corps du texte

Publier des fichiers et des données associées sur RESTful WebService au format JSON

<p>Dans l'application que je développe, nous souhaitons que le client envoie des données au format JSON, je développe donc une API RESTful. Une partie de l'application nécessite que le client télécharge un fichier (généralement une image), ainsi que des informations sur l'image. </p> <p>J'ai du mal à trouver comment y parvenir en une seule requête. Est-il possible d'encoder en Base64 les données d'un fichier dans une chaîne JSON ? Dois-je effectuer deux requêtes POST au serveur ? Ne devrais-je pas utiliser JSON pour gérer cela ? </p> <p>Nous utilisons également Grails sur le backend, et ces services sont accessibles par les clients mobiles natifs (iPhone, Android, etc.), si ces informations sont différentes. </p>
P粉056618053P粉056618053461 Il y a quelques jours582

répondre à tous(2)je répondrai

  • P粉994092873

    P粉9940928732023-08-21 12:54:55

    Vous pouvez utiliser le type de contenu multipart/form-data pour envoyer des fichiers et des données en une seule requête :

    De http://www.faqs.org/rfcs/rfc2388.html :

    Vous pouvez inclure des informations de fichier ou des informations de champ dans chaque section entre chaque limite. J'ai implémenté avec succès un service RESTful qui oblige les utilisateurs à soumettre des données et des formulaires, multipart/form-data fonctionne parfaitement. Le service est construit en utilisant Java/Spring et le client utilise C#, donc malheureusement je n'ai pas d'exemple Grails à vous donner sur la façon de configurer le service. Dans ce cas, vous n'avez pas besoin d'utiliser JSON puisque chaque section "form-data" vous donne un emplacement pour spécifier les noms des paramètres et leurs valeurs.

    L'avantage d'utiliser multipart/form-data est que vous utilisez les en-têtes définis par HTTP, vous suivez donc la philosophie REST consistant à utiliser les outils HTTP existants pour créer des services.

    répondre
    0
  • P粉145543872

    P粉1455438722023-08-21 11:24:16

    J'ai posé une question similaire ici :

    Comment télécharger des fichiers avec des métadonnées à l'aide du service Web REST ?

    Vous avez essentiellement trois options :

    1. Base64 encode le fichier, mais augmente la taille des données d'environ 33 % et ajoute une surcharge de traitement d'encodage/décodage à la fois sur le serveur et sur le client.
    2. Envoyez d'abord le fichier sous la forme multipart/form-data et renvoyez l'identifiant au client. Le client envoie ensuite des métadonnées en utilisant cet ID et le serveur réassocie le fichier et les métadonnées.
    3. Envoyez d'abord les métadonnées et renvoyez l'ID au client. Le client envoie ensuite le fichier en utilisant cet ID et le serveur réassocie le fichier et les métadonnées.

    répondre
    0
  • Annulerrépondre