2016-12-23 1 views
-1

J'ai conçu le module de connexion dans l'API RESTFul en utilisant jersey.Comment retourner un tableau de deux objets JSON dans l'API RESTFul de Jersey (JAX-RS)

chaque fois qu'une erreur est survenue lors connexion, il renvoie le code et le message comme,

{ 
    "errorFlag": 1, 
    "errorMessage": "Login Failed" 
} 

erreur, mais chaque fois que je reçois de bons résultats, il retourne

{ 
    "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e", 
    "email": "[email protected]", 
    "name": "Chandrakant" 
} 

Je suis à la recherche des résultats comme ci-dessous

{ 
      "errorFlag": 0, 
      "errorMessage":{ 
      "apiKey": "3942328b-fa65-496c-bf32-910aafbc1b0e", 
      "email": "[email protected]", 
      "name": "Chandrakant"} 
} 
+0

Je ne comprends pas vraiment le point d'avoir autre chose qu'un message d'erreur dans le champ nommé "errorMessage", mais de toute façon, quelle est votre question? Qu'est-ce qui vous empêche de le faire? Comment envisagez-vous de stocker la clé API et le nom de l'utilisateur si l'authentification a échoué, et vous ne savez donc pas qui est l'utilisateur? –

+0

Voir la question mise à jour, l'application client va vérifier si l'indicateur est 1 ou 0 –

+1

Je ne comprends toujours pas le point d'avoir autre chose qu'un message d'erreur dans le champ nommé "errorMessage". Et vous n'avez toujours pas dit quelle était votre question, et qu'est-ce qui vous a empêché de le faire? Mais pourquoi le feriez-vous de toute façon? Le client devrait déjà savoir que c'est un succès parce que vous renvoyez une réponse avec un statut 2xx (typiquement 200 - OK). Et il faut savoir que c'est une erreur car vous renvoyez une réponse avec un statut d'erreur (ici, ça devrait être 401). C'est la manière HTTP standard de faire les choses, et toutes les librairies HTTP des clients s'appuient sur ces méthodes standard. –

Répondre

0

Utilisez la structure comme ci-dessous,

{ 
    status/statusCode : 200/400, //eg. 200 for success, any other for failure. 
    statusMessage : "Success/<failureMessage>", 
    errorDetails : "Failed due to <reason>" //optional 
    data :{ //data will exists only in case of success call. 
    } 
} 

vous pouvez y parvenir comme ci-dessous,

@GET 
@Path("/images/{image}") 
@Produces("image/*") 
public Response getImage(@PathParam("image") String image) { 
  File f = new File(image); 
  
  if (!f.exists()) { 
    throw new WebApplicationException(404); 
  } 
  
  String mt = new MimetypesFileTypeMap().getContentType(f); 
  return Response.ok(f, mt).build(); 
} 
+0

Cela a du sens, mais comment puis-je y parvenir, tous les exemples de code –

+0

Utilisez les classes ci-dessus 'Response' classe, passez par les docs et vous trouverez comment construire votre propre réponse .. –

0

Vous pouvez retourner tous les attributs HashMap comme valeur de clé. Ci-dessous morceau de code a fonctionné pour moi

@POST @Path ("/ test") @Produces (MediaType.APPLICATION_JSON) @Consumes (MediaType.APPLICATION_JSON) chèque public HashMap (InputStream inputJsonObj) { HashMap map = new HashMap(); map.put ("key1", "value1"); carte de retour;
}