首页 > 解决方案 > 无需创建模型即可发布 2 个字符串的最简单方法

问题描述

我有一个我试图发布到我的 C# API 的对象,它只有两个字符串:

Body例子:

fetch(url, {
  method: 'POST',
  body: { username: 'myusername', password: 'mypassword' },
  headers:{
    'Content-Type': 'application/json'
  }
});

我的 API 方法如下所示:

[HttpPost("auth")]
public async Task<IActionResult>(NetworkCredential creds) { ... }

但是,我希望它是这样的:

[HttpPost("auth")]
public async Task<IActionResult>(string username, string password) { ... }

我真的不想只为两个字符串创建一个模型(这就是我目前使用NetworkCredential. 的原因。)我还有其他不是用户名和密码的实例,所以我无法NetworkCredential在所有情况下都使用。

是否有任何神奇的组合/方法来设置 API 方法以从有效负载中嗅出单个字符串,而无需创建具有两个属性的模型?我玩过一些属性([FromBody]例如),但没有运气。

标签: javascriptc#

解决方案


感谢@Daniel A. White 和@Amy 的指导。

我的解决方案是传递数据FormData而不是json来自客户端。这样做可以让我的“想要的”方法起作用。

注意: this._httpClient来自Angular HttpClient 模块

例子:

const formData = new FormData();
formData.append('username', 'myusername');
formData.append('password', 'mypassword');
const response = await this._httpClient.post(<url>, formData).toPromise();

API方法:

[HttpPost("auth")]
public async Task<IActionResult>(string username, string password) { ... }

推荐阅读