从 Web api 控制器方法返回单个对象和字符串

Returning single object and string from web api controller method

我处于需要 return 单个对象和字符串的情况。我是网络新手 api 并且无法弄清楚如何return 多个参数..

下面是我到目前为止尝试过的代码..

    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);
    }

任何人都可以帮助解决这个问题..

非常感谢

创建一个 class 来包装两个值,或者您可以 return 一个匿名类型,如下所示:

return Ok(new { consumer, sessionToken });

请注意,您需要将 sessionToken 提升到 if 语句范围之外。

只需定义一个结构到 return:

struct MyReturType
{
   object obj;
   string str;

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

然后 return 那:

    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));
    }