this.http.post() 给出 404 (Not Found) 错误

Posted

技术标签:

【中文标题】this.http.post() 给出 404 (Not Found) 错误【英文标题】:The this.http.post() gives a 404 (Not Found) error 【发布时间】:2021-12-18 12:47:04 【问题描述】:

我目前正在尝试使用 Angular 的服务器创建一个创建函数(以进行报价)。 所以我在 html 文件中输入了一个表单。

<form [formGroup]="addquoteform" (submit)="createquote()">
    <p>
        <mat-form-field appearance="outline">
            <mat-label>quote</mat-label>
            <input matInput placeholder="Placeholder" formControlName="quote">
            <mat-icon matSuffix>sentiment_very_satisfied</mat-icon>
        </mat-form-field>
    </p>
    <p>
        <button mat-raised-button color="primary">Submit</button>
    </p>
</form>

然后我在.ts文件中做了这个函数。

createquote()
    this.dbService.addquote(this.addquoteform.value)
    .subscribe(data => 
      console.log("new quote")
    , err => 
      console.log(err);
    )
  

然后我在 server/quote.ts 中做了报价

interface QuoteData 
    quote : string;


export interface quote extends  QuoteData


然后在 services/dbService.ts 文件中我创建了 this.http.post()

addquote(quoteObj: any) 
        return this.http.post(this.baseUrl + 'quote', quoteObj);
    

但最后一个不起作用。 我得到的只是错误: POST http://localhost:4200/quote 404 (Not Found) 我尝试更改链接,但似乎没有任何帮助。 知道是什么原因造成的吗?

【问题讨论】:

baseUrl 是否正确? 4200 通常是 Angular 应用程序端口,而不是 Web 服务端口。 在某个端口('8080' 或 smt)上侦听神秘的 API(节点 + 可能是 express / typescript)=> 所以将您的数据发布到 localhost:8080(不要忘记 cors)或smt 而不是 ng 开发服务器端口(除非您为 API 设置代理)... @LucaFarsetti 感谢您的回复,但我认为问题不在于 baseUrl,因为我尝试更改 baseUrl 很多但没有任何改变。 【参考方案1】:

原因可能是第一个:后端的端点不匹配。 第二:后端可能对配置中的所有API都有API前缀,你再检查一下。那是http://localhost:4200/api/qoute

【讨论】:

感谢您的回复,但仍然出现同样的错误:POST http://localhost:4200/api/quote 404 (Not Found) 你能把负责在后端存储报价的代码贴出来吗?还是服务器端? 不就是services/dbService.ts文件吗? 不,dbService.ts 文件正在对特定 URL 进行 API 调用,即 this.baseUrl + 'quote',它变成 localhost:4200/qoute。现在这个 API 必须在某个地方实现,才能执行 addQoute 任务。 你的意思是我放this.app.post('/api/quote', this.quotePost.bind(this));的server/server.ts文件吗?【参考方案2】:

您是否尝试调用任何后端 api?因为它不会尝试使用端口 4200 在您的前端应用程序上调用 thay api。显然不会存在。它只能为资产数据调用前端。如果要调用后端,请确保后端也在运行或服务器正在运行。因为查看上面的信息,它无法路由到您的服务器。

【讨论】:

以上是关于this.http.post() 给出 404 (Not Found) 错误的主要内容,如果未能解决你的问题,请参考以下文章

无法读取未定义的属性“帖子”:this.http.post 错误

vue中调用接口传输对象使用this.$http.get 和 this.$http.post

vue基本知识回顾 | this.$http.get 和 this.$http.post传参 / created与mounted区别 / 富文本解析

vue基本知识回顾 | this.$http.get 和 this.$http.post传参 / created与mounted区别 / 富文本解析

vue基本知识回顾 | this.$http.get 和 this.$http.post传参 / created与mounted区别 / 富文本解析

Django 有时给出 404 有时给出 200