gpt4 book ai didi

c# - 在我的 web api 端点中解析 HTTP POST 请求正文时出错

转载 作者:行者123 更新时间:2023-11-30 21:27:58 26 4
gpt4 key购买 nike

我有一个带有 POST 端点的 Web API 项目。我正在尝试使用带有 JSON 正文的请求访问此端点,并将其转换为该端点的函数参数。但是,我的函数中的参数始终为空。

后置函数端点:

[HttpPost]
[Route("PostMedia/")]
public void UpdateMedia([FromBody] Media value)
{
string[] file = Directory.GetFiles(this.config.Value.JSONFileDirectory, value.Id.ToString() + ".json");
if (file.Length == 1)
{
try
{
using (StreamReader reader = new StreamReader(file[0]))
{
string json = reader.ReadToEnd();
}
}
catch (Exception e)
{
throw new Exception("Could not parse file JSON for ID: " + value.Id.ToString(), e);
}
}
}

我的媒体模型类及其 CatalogBase 父类:

public class Media : CatalogueBase
{
MediaType type;
MediaRating rating;
string genre;

public MediaType Type { get => type; set => type = value; }
public MediaRating Rating { get => rating; set => rating = value; }
public string Genre { get => genre; set => genre = value; }
}

public abstract class CatalogueBase
{
string name;
string description;
int id;

public string Name { get => name; set => name = value; }
public string Description { get => description; set => description = value; }
public int Id { get => id; set => id = value; }
}

JSON 请求我正在使用我的 API:

{
"Media" : {
"Id": 1,
"Name": "Gettysburg",
"Description": "A movie set during the American Civil War",
"Type": "Movie",
"Rating": "Excellent",
"Genre" : "Drama"
}
}

发生的情况是我正在到达终点,但(媒体值)参数始终为 null/默认值。它实际上并没有用 postman 发送的 POST 请求正文中的数据填充任何内容。知道为什么我的模型类没有被框架填充吗?

这是模型参数在调试器中的样子:

Model Parameter in Debugger

最佳答案

模型绑定(bind)器无法将传入的 JSON 映射到类定义。

要么从 JSON 中移除根对象以匹配对象模型

{ 
"Id": 1,
"Name": "Gettysburg",
"Description": "A movie set during the American Civil War",
"Type": "Movie",
"Rating": "Excellent",
"Genre" : "Drama"
}

或者更新所需的模型以匹配发送的 JSON。

public class MediaUpdateModel {
public Media Media { get; set; }
}

并将其用于操作

public void UpdateMedia([FromBody] MediaUpdateModel value) {
var media = value.Media;

//...
}

引用 Model Binding in ASP.NET Core

关于c# - 在我的 web api 端点中解析 HTTP POST 请求正文时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56917720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com