为什么Angular 6 post方法不要求WebApi MVC 5?

时间:2018-10-12 19:17:21

标签: angular asp.net-web-api

我有一个WebApi,已经在该WebApi上从另一个应用程序发送了请求。一切正常。我写了WebApiConfig Axes.set_autoscale_on(True) 现在,我已经创建了另一个应用程序,我想推迟此API的发布方法。 我创建了表单,并编写了一种方法将其提交给API

config.EnableCors(new EnableCorsAttribute("http://localhost:4200", headers: "*", methods: "*"));

我在ts和cs上创建了相同的自定义类

postUser(user: User) {
var httpOptions = { headers: new HttpHeaders({
  'Content-Type': 'application/json'
})};
var body = JSON.stringify(user);
return this.http.post<User>('http://localhost:51251/api/Users', body, httpOptions);
}  

我在API中的后方法:

export class User {
Id: number;
Email: string;
Password: string;
ConfirmPassword: string;
}

public class User
{
    public int Id { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string ConfirmPassword { get; set; }
}

在控制台中,像这样// POST: api/User [ResponseType(typeof(User))] public IHttpActionResult PostUser(User user) { db.Users.Add(user); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = user.Id }, user); } 记录正文 但是没有任何要求,我也不明白为什么。没有错误显示。可能是什么原因?

1 个答案:

答案 0 :(得分:1)

Component或类似的执行postUser()中,您必须调用subscribe()才能使请求实际执行。假设postUser()服务Injectable

服务:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class SomeService {
   constructor(private http: HttpClient) { }

   postUser(user: User) {
     const httpOptions = { headers: new HttpHeaders({
       'Content-Type': 'application/json'
     })};

     const body = JSON.stringify(user);

     return this.http.post<User>('http://localhost:51251/api/Users', body, httpOptions);
  } 
}

组件:

import { Component } from '@angular/core';
import { SomeService } from 'path/to/service';

@Component({ // ... })
export class AppComponent  {
  constructor(private someService: SomeService) {}

  someMethod() {
    this.someService.postUser(someUser).subscribe(results => console.log(results));
  }
}

希望有帮助!