如何在Angular中将字符串传递到发布请求?

莱昂内尔

我已经进行了一些搜索,但似乎无济于事。

我的角度看起来像这样,用户名是字符串。

getUser(username = null) {

if (username == null) {
  username = this.cookie.getCookieValue("username");
}
console.log(JSON.stringify({ username: username }));
console.log("passing in "+ username);

return this.http.post<User>(this.userBackendUrl + "/user", username, httpOptions).pipe(map(user => {
  console.log("Successfully got the user!");
  console.log(user);
  return user;
}));}

后端方法看起来像

public ActionResult GetUser(string username)
    {

我可以使用方法,但后端的用户名字符串始终为null。

adiii4

根据与请求一起发送字符串的方式,您必须执行以下操作:

以纯字符串形式发送

如果您的usernameor字符串在请求中字符串形式发送,如下所示:

"testuser"

然后,可以将[FromBody]属性添加string控制器中参数,如下所示:

public ActionResult GetUser([FromBody] string username)
{
   //...
}

如果未发送您的用户名或字符串,"testuser"则将变量或字符串传递给JSON.stringify方法,如下所示:

return this.http.post<User>(this.userBackendUrl + "/user", JSON.stringify(username), httpOptions) //...

作为JSON对象发送

如果您的用户名或字符串在请求中作为JSON对象发送,如下所示:

{
   username: "testuser"
}

然后,您需要创建一个单独的类(例如DTO GetUserRequest)tp绑定,该类应如下所示:

public class GetUserRequest
{
   public string Username { get; set; }
}

稍后,您可以将模型(您发送的JSON对象)绑定到此类,再次提供[FromBody]属性和以创建的类作为数据类型的参数,如下所示:

public ActionResult GetUser([FromBody] GetUserRequest user)
{
   //...
}

多个参数而无需创建额外的类/ DTO

正如Lionel在这里问的那样,我知道两种方法可以绑定多个参数而无需创建额外的类或DTO。

不幸的是,据[FromBody]我所知,您不能将多个参数绑定

但是有以下两种方法:

以表单网址编码发送数据

如果您发送经过编码的数据表单网址,则可以将数据/参数与[FromForm]属性绑定,如下所示:

以表单网址编码发送数据:

username=test&email=test%40gmail.com&created=2018-08-07T15%3A02%3A00.736Z

将数据绑定到[FromForm]属性:

public ActionResult GetUser([FromForm] string username, [FromForm] string email, [FromForm] DateTime created)
{
   //...
}

将数据作为JSON对象发送并与Newtonsoft绑定

另一种方法是使用JObjectNewtonsoft。我认为这种方式不太直观。

您可以将数据作为普通的JSON对象发送,如下所示:

{   
   "username": "test",  
   "email": "[email protected]",   
   "created": "2018-08-07T14:53:54.639Z"
}

然后,您将数据绑定到具有[FromBody]属性的单个JObject,然后将数据绑定到单独的变量,如下所示:

public void GetUser([FromBody] JObject requestBody)
{
   string username = requestBody["username"].ToString();
   string email = requestBody["email"].ToString();
   DateTime created = requestBody["created"].ToObject<DateTime>();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在ASP.NET Core MVC中将js字符串发布到C#

如何在闪亮的 R 中将字符串从 textInput 传递到函数(如 nls)

如何在基于folium的Map中将动态字符串值从Python传递到html?

如何在 Android 中将字符串数组从 RecyclerView Adapter 传递到 Fragment

如何在 Angular get 请求中将字符串值发送到后端

如何在 Angular 6 中将查询字符串传递给我的服务

如何在Python中将字符串传递给函数

如何在Java中将字符串绑定到对象

如何在Web API的http发布请求中将长破折号(-)作为字符串数据的一部分发布

如何在Powershell中将字符串作为非字符串传递给命令?

如何在Django中将python字符串作为字符串传递给javascript?

如何在同一活动中将字符串从textview传递到另一个texview?

如何在Google电子表格的Google App脚本中将数组传递到查询字符串中

如何在Angular中将字符串转换为json?

发布字符串请求

如何通过使用JQuery AJAX在GET请求中将数组作为查询字符串传递

如何在bash脚本中的curl中将多行json字符串作为主体发布

如何在C#中将字节数组或字符串作为文件http发布

如何在脚本中将带有特殊字符的字符串传递给shell命令?

在Golang中将字符串传递到命令的STDIN中

如何在 Angular 中创建 TypeScript 文字类型(从字符串到特定字符串)?

如何在SytemVerilog中将字符串变量(不是字符串文字)传递给$ dumpfile系统任务?

如何在Java中将给定字符串中的字符减少到回文

如何在REACT中将JSON对象请求字符串值更新为NUMBER

如何在Rails中将json转换为单行字符串并包含在POST请求中?

如何在Java Flash-ActionScript中将url请求的内容转换为字符串

如何在请求中将动态值设置为json字符串的键

如何在 Nlog 中将请求正文作为字符串 rlog

如何从角度$ http发布请求获取json字符串