尝试使用 WebClient 将空主体传递给 POST 端点

Attempting to pass empty body to POST endpoint with WebClient

我目前在我的项目中有一个端点:

[HttpPost("process")]
public IActionResult Process (string Val1, [FromBody] object Json)
{
     //processing.....

     Return Ok(...);  
}

在我的客户端,我正尝试使用 WebClient 调用此端点,如下所示:

string response = null;

string body = "{}";

using (var client = new WebClient())
{
     client.UserDefaultCredentials = true;
     client.Headers.Add(HttpRequestHeader.ContentType, "application/json; charset=utf-8");

     response = client.UploadString("localhost:55555/api/process?Val1=Param", body);
}

这是我的担忧所在:

问题:

如果这些问题看起来很明显,请原谅我的“菜鸟”,我才刚刚开始 API 开发,希望确保我使用的是最佳实践。

您当前使用的是 WebClient,它已过时,支持 HttpClient(请参阅此 answer)。使用 HttpClient 时,您可以 post 清空正文,如下所示:await client.PostAsync("localhost:55555/api/process?Val1=Param", null);

关于你的第二个问题。查看 Data Transfer Objects,又名 DTO。它们是简而言之的哑类型,您可以纯粹用于通过 API 传递和接收数据,您也可以向它们添加诸如验证之类的东西。只有在接收动态数据时才需要使用 object 或 JObject,否则请尽可能使用 DTO。