【问题标题】:Angular 11 POST Method URL Query StringAngular 11 POST 方法 URL 查询字符串
【发布时间】:2021-06-01 13:10:26
【问题描述】:

这是我第一次使用 HTTP 方法。我想发出一个 POST 请求,将这四个变量和值传递给我的 API。

date: number;
temperatureC: number;
temperatureF: number;
summary: string;

我知道我可以在 POST 方法中像 https://localhost:30233/WeatherForecast?date=13&temperatureC=4&temperatureF=23&summary=nice 这样简单地写出查询字符串,这样就可以了。但我知道这不是很有效也不是模块化的。有没有更好的方法使用 POST 方法传递查询字符串?

到目前为止,这就是我所拥有的。其中包含一个没有传递任何信息的 POST 方法。

import { Component, Inject, OnInit } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';


@Component({
  selector: 'app-WeatherData',
  templateUrl: './AddWeatherData.component.html',

})


export class PostDataComponent {
  baseUrl: string;
  date: number;
  temperatureC: number;
  temperatureF: number;
  summary: string;
  
  

  constructor(public http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
    this.baseUrl = "https://localhost:30233/WeatherForecast";
  }

  CreateData(postData) {

    let endPoints = ""
    this.http.post(this.baseUrl + endPoints, postData).subscribe(data => {
      console.log(data);

    });

  }
}

来自我的控制器的发布方法

[HttpPost]
        public String Post(Int32 Date, Int32 TemperatureC, Int32 TemperatureF, String Summary)
        {
            {
                Posted = (Date, TemperatureC, TemperatureF, Summary);
                return Posted.ToString();
            }
        }

更新: 我认为我的控制器现在有问题吗?在更改我的代码以适应 POST 方法后,我现在收到此错误。

{error: SyntaxError: Unexpected token ( in JSON at position 0 at JSON.parse (<anonymous>) at XMLHtt…, text: "(0, 0, 0, )"

我该如何解决这个问题?

【问题讨论】:

    标签: angular http-post query-string


    【解决方案1】:
    params = {
    date: number;
    temperatureC: number;
    temperatureF: number;
    summary: string;
    }
    
    this.http.post(this.baseUrl , { params}).subscribe(data => {
          console.log(data);
    
    });
    

    【讨论】:

      【解决方案2】:

      如果我没记错的话,@angular/common/http 中有一个名为 HttpParams 的方法可以帮助构建 params 对象。然后,当准备好后,您可以按照 Sanjay 的说明通过它们。

      const params = new HttpParams()
        .set('page', PageNo)
        .set('sort', SortOn);
      
      return this.http.post(this.baseURL + endpoints, {params})
       
      

      【讨论】:

      • 我之前尝试过实现这一点,因为这就是其他示例的解决方式。然而,到目前为止,我一直没有成功。您能否提供更多关于如何正确实现 HttpParams 的详细信息?
      • 我前一阵子用过,所以我现在重新检查了这个方法,但这似乎是正确的解决方案,看这里(我没有可以运行查询的 API 服务,但如果你去到网络选项卡并找到您的查询,然后移动到form data 部分,您可以在那里看到tempF=44&amp;tempC=21stackblitz.com/edit/angular-m4eokm?file=src/app/…
      • 我现在可以看到带有我的变量的表单数据,但似乎我还有另一个问题。转到响应部分时,我在使用 POST 方法保存这 4 个变量时创建的元组仍然是 (0, 0, 0, ) -- 3 个空整数和一个空字符串。我在位置 0 处收到“SyntaxError:JSON 中的意外标记”
      猜你喜欢
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2014-06-25
      相关资源
      最近更新 更多