【问题标题】:Returning single object and string from web api controller method从 web api 控制器方法返回单个对象和字符串
【发布时间】:2017-05-29 15:56:19
【问题描述】:

我处于需要返回单个对象和字符串的情况..我对 web api 很陌生,只是无法弄清楚如何返回多个参数..

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

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

谁能帮忙解答一下这个问题..

在此先感谢

【问题讨论】:

    标签: c# .net asp.net-web-api asp.net-web-api2 httpresponse


    【解决方案1】:

    创建一个包含两个值的类,或者您可以像这样返回一个匿名类型:

    return Ok(new { consumer, sessionToken });
    

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

    【讨论】:

    • 感谢 rob 的帮助 :)
    【解决方案2】:

    Joust 定义一个要返回的结构体:

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

    然后返回:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多