如何修复Postman中从PUT json发送的空对象?

时间:2019-02-13 01:45:16

标签: asp.net-core-mvc asp.net-core-2.1

我正在从邮递员的正文中插入json,希望更新名为MusicListListItem的实体。

调试时,我发现MusicListListItem项是null

这是我在MusicListsController上使用的方法:

    [HttpPut("{id}")]
    [Route("API/[Controller]/UpdateMusicListListItem")]
    public async Task<IActionResult> PutMusicListListItem(int id, [FromBody]MusicListListItem item)
    {

        MusicListListItem myMLLI = item; 
        if (id != item.MusicListListItemId)
        {
            return BadRequest();
        }

        _context.Entry(item).State = EntityState.Modified;
        await _context.SaveChangesAsync();

        return NoContent();
    }

这是我放入Postman's Body部分并选择了JSON(application / json)的json:

{
    "musicListListItemId": 4,
    "musicListId": 1,
    "listItemId": 1019,
    "listItem": {
        "artist": null,
        "listItemId": 1019,
        "title": "test33_tryAddRelation",
        "dateCreated": "0001-01-01T00:00:00",
        "musicListListItem": []
    },
    "rank": 2,
    "comments": null,
    "imageUrl": null,
    "dateModified": "0001-01-01T00:00:00",
    "deleted": false
}

我希望API控制器的PutMusicListListItem方法能够从Postman的PUT请求的正文中接收MusicListListItem对象,但是它以null的形式返回。

我最终得到

  

NullReferenceException:对象引用未设置为对象的实例。

错误。

这是所要求的其他信息:

musicListListItem对象定义:

using MusicListsApp.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;

namespace Domain
{
    public class MusicListListItem
    {
        public int MusicListListItemId { get; set; }

        public int MusicListId { get; set; }

        public int ListItemId { get; set; }

        public virtual MusicList MusicList { get; set; }

        public virtual ListItem ListItem { get; set; }

        public int Rank { get; set; }

        public string Comments { get; set; }

        public string ImageUrl { get; set; }

        public DateTime DateModified { get; set; }

        public bool Deleted { get; set; }
    }
}

邮递员的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

通过使用我通过创建GETMusicListListItemById方法获得的更简单的MusicListListItem json对象,我能够成功地将API输入到该API:

PATCH