[英]POST request getting null value of string on Angular with C# API
I am trying to call a simple request, but the value(property) in API is null.我正在尝试调用一个简单的请求,但 API 中的值(属性)为空。 Do you have any suggestions?你有什么建议吗?
C# C#
[Route("getpagefields")]
[AcceptVerbs(WebRequestMethods.Http.Post)]
public IHttpActionResult GetPageFields([FromBody]string property)
{
USERS user = TokenUtils.Authonticate(Request);
return Ok(new { fields = WebServiceBL.GetPageFields(property) });
}
.ts .ts
GetPageFields(){
debugger;
let urlPart = this.router.url.split('/')[3];
let params = new HttpParams();
params = params.set('data', urlPart);
let test = this._httpClient.post(environment.apiBaseUrl+'users/getpagefields',params).subscribe(() => {
});
}
You can either submit your data via request-body, via query-params or via request-header.您可以通过请求正文、查询参数或请求标头提交您的数据。 I made one example for each of these possibilities:我为这些可能性中的每一种都做了一个例子:
Submitting Data via Request-Body:通过 Request-Body 提交数据:
If you want to submit data via body, you can wrap it in an object and pass it via the second parameter:如果你想通过 body 提交数据,你可以将它包装在一个对象中并通过第二个参数传递:
const myData = { id: '1', name: 'Lukas' };
this.http.post(url, myData).subscribe();
And your.Net backend-method will then expect and object that corresponds to myData
:然后,您的 .Net 后端方法将期望对应于myData
的对象:
[HttpPost]
public IHttpActionResult GetPageFields([FromBody]MyDataObject myObject)
{
var id = myObject.id;
var name = myObject.name;
}
Submitting Data via Query-Params:通过查询参数提交数据:
If you want to pass string values via HttpParams
, they need to be passed as a property of third argument:如果你想通过HttpParams
传递字符串值,它们需要作为第三个参数的属性传递:
const params = new HttpParams()
.set('id', '1')
.set('name', 'Lukas');
this.http.post(url, null, { params });
And the corresponding.Net backend-method might look like this:相应的 .Net 后端方法可能如下所示:
[HttpPost]
public IHttpActionResult GetPageFields([FromQuery] string id, [FromQuery] string name)
{
var id = id;
var name = name;
}
Submitting Data via Request-Header通过 Request-Header 提交数据
In Angular you can submit data via Http-Header like this:在 Angular 中,你可以像这样通过 Http-Header 提交数据:
const httpHeaders = new HttpHeaders()
.set('id', '1')
.set('name', 'Lukas');
const options = { headers: httpHeaders };
this.http.post(url, null, options);
And the corresponding.Net backend-method might look like this:相应的 .Net 后端方法可能如下所示:
[HttpPost]
public IHttpActionResult GetPageFields()
{
var id = Request.Headers.FirstOrDefault(x => x.Key == "id").Value.FirstOrDefault();
var name = Request.Headers.FirstOrDefault(x => x.Key == "name").Value.FirstOrDefault();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.