从 Web API 获取空值

本文关键字:空值 获取 API Web | 更新日期: 2023-09-27 18:35:32

我正在尝试存储作为对话成员的字符串列表。

[DataContract]
public class Conversation
{
    [Key]
    [DataMember]
    public string Key { get; set; }
    [DataMember]
    public string ConversationName { get; set; }
    [DataMember]
    public string Administrator { get; set; }
    [DataMember]
    public List<string> Members { get; set; }
    public Conversation(string key, string name, string admin, List<string> members)
    {
        Key = key;
        ConversationName = name;
        Administrator = admin;
        Members = members;
    }
    public Conversation()
    {
    }
}

我正在使用 Postman 向 URI 发出 Post 请求,该请求似乎工作正常,返回 201 Created 并提供一个包含正确信息的 json 对象。这是我发布的json:

{
    "Key": "123",
    "ConversationName": "Test",
    "Administrator": "Ken",
   "Members": ["y@12.com", "f@78.com"]
}

但是,当我尝试在GET方法中获取对话时,结果如下:

{
  "Key": "123",
  "ConversationName": "Test",
  "Administrator": "Ken",
  "Members": null
}

这些是我在控制器中的函数:

发布:

[HttpPost]
    //[ResponseType(typeof(Conversation))]
    public async Task<IHttpActionResult> PostConversation(Conversation convo)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        db.Conversations.Add(convo);
        await db.SaveChangesAsync();
        return CreatedAtRoute("DefaultApi", new { name = convo.Key }, convo);
    }

获取:

[HttpGet]
public IQueryable<Conversation> GetConversations()
{
    return db.Conversations;
}

任何帮助将不胜感激。谢谢!

从 Web API 获取空值

该帖子基本上返回您提供的实体,显然是带有Members的。

get 从数据库加载Conversation。它当时不能有任何Members,因为Members是一个List<string>,不可能映射到数据库列。

您可能希望帖子Members存储到数据库中。这不会发生,因为您应该使用Member实体代替字符串。 Member可以是具有Idstring属性的简单类。