我处于这样一种情况,我需要将单个对象与字符串一起返回..我对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);
}
任何人都可以帮助解决这个问题。
非常感谢提前
答案 0 :(得分:3)
创建一个包装两个值的类,或者可以返回一个匿名类型,如下所示:
return Ok(new { consumer, sessionToken });
请注意,您需要将sessionToken
从if语句范围中提升。
答案 1 :(得分: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));
}