0

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

[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);
}

这是我担心的地方:

  • 对于这个端点,我通常会传递一个 JSON 对象

  • 但是,我希望这个端点也不需要正文,我希望它为空,因为端点不应该需要它

  • 如果您查看我的body变量 - 我将其设置为“{}”,否则我没有找到将“EMPTY”主体传递给端点的不同方法

问题:

  • 如何正确地将 EMPTY 正文传递到此端点?(这个端点将被不同的客户使用,我只是在寻找最佳实践方法?

  • 在我的端点中,我有[FromBody] object Json参数。让它成为更好的做法object还是我可以这样做JObject仍然可以接受一个空的身体

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

4

1 回答 1

0

您当前正在使用 WebClient,它已过时而有利于 HttpClient(请参阅此答案)。使用 HttpClient 时,您可以按如下方式发布空正文:await client.PostAsync("localhost:55555/api/process?Val1=Param", null);

至于你的第二个问题。查看数据传输对象,也就是 DTO。简而言之,它们是愚蠢的类型,您可以纯粹用于通过 API 传递和接收数据,您也可以向它们添加验证等内容。只有在接收动态数据时才需要使用 object 或 JObject,否则尽可能使用 DTO。

于 2021-11-05T13:48:15.290 回答