2017-05-29 5 views
1

Je suis dans une situation où je dois retourner l'objet unique avec la chaîne .. Je suis très nouveau à l'API Web et je ne pouvais tout simplement pas comprendre comment retour plusieurs paramètres ..Retour d'un seul objet et chaîne à partir de la méthode de contrôleur d'api Web

ci-dessous est le code que je l'ai essayé jusqu'à présent ..

public async Task<IHttpActionResult> PostAuthenticationData(long id, string password) 
    { 
     Consumer consumer = await db.Consumers.FindAsync(id); 

     if (consumer == null) 
     { 
      return NotFound(); 
     } 

     if(consumer.ConsumerPassword != password) 
     { 
      return BadRequest(); 
     } 

     ConsumerSessionTokenLog consumerSessionTokenLog = await db.ConsumerSessionTokenLogs.FindAsync(id); 

     if(consumerSessionTokenLog == null) 
     { 
      return NotFound(); 
     } 
     else 
     { 
      string sessionToken = consumerSessionTokenLog.SessionToken; 
     } 

    /// here i need to return "sessionToken" and "consumer" object 
     return Ok(consumer); 
    } 

Quelqu'un pourrait-il s'il vous plaît aider sur cette requête ..

un grand merci à l'avance

Répondre

3

Créer une classe qui enveloppe les deux valeurs, ou vous pouvez retourner un type anonyme comme ceci:

return Ok(new { consumer, sessionToken }); 

Notez que vous aurez besoin de hisser sessionToken de votre instruction if portée.

+0

Merci Rob pour l'aide :) –

2

Joust définir une struct retourner:

struct MyReturType 
{ 
    object obj; 
    string str; 

    public MyReturType(object o, string s) 
    { 
     obj = o; 
     str = s; 
    } 
} 

Et puis retourner que:

public async Task<IHttpActionResult> PostAuthenticationData(long id, string password) 
    { 
     Consumer consumer = await db.Consumers.FindAsync(id); 

     if (consumer == null) 
     { 
      return NotFound(); 
     } 

     if(consumer.ConsumerPassword != password) 
     { 
      return BadRequest(); 
     } 

     ConsumerSessionTokenLog consumerSessionTokenLog = await db.ConsumerSessionTokenLogs.FindAsync(id); 

     if(consumerSessionTokenLog == null) 
     { 
      return NotFound(); 
     } 
     else 
     { 
      string sessionToken = consumerSessionTokenLog.SessionToken; 
     } 

    /// here i need to return "sessionToken" and "consumer" object 
     return Ok(new MyReturType(consumer,sessionToken)); 
    }