想請問關於http.post的撰寫方式

我想請問一下關於http.post的方式應該如何撰寫呢?
不知道為什麼怎麼寫都會報錯(500),但是http.get倒是滿順利的
我的程式碼如下:

private headers = new Headers({‘Content-Type’: ‘application/x-www-form-urlencoded’});

  LoginVerifi(account: String, password: String)
  // 登入驗證
  {
     this.http
      .post('http://hplus.ys3s.com/api/Login/VerifiData', JSON.stringify({account: account, password: password}), {headers: this.headers} )
      .toPromise()
      .then(res => console.log(res.json()));
  }

然後錯誤訊息如下:

主要錯誤訊息我看到的是跨網域相同來源政策的問題,但我在C#端也有加上讓他允許跨網域
另外我自己寫的get方法是ok的。所以我在想是不是沒有找到我後端的function才報錯

另外附上後端C# WebApi的code

 public class LoginController : BaseController
    {
        [HttpPost]
        [Route("api/Login/VerifiData")]
        [EnableCors(
           origins: "http://localhost:4200",//設定允許哪些來源網址,允許存取此web API
           headers: "accept,content-type,origin",
           methods: "post")]
        public IHttpActionResult LoginVerifi([FromBody] users data)
        {
            var session = System.Web.HttpContext.Current.Session;
            var LoginInfo = db.users.Where(x => x.account.Equals(data.account) && x.password.Equals(data.password)).First();

            if (LoginInfo.member.Count != 0)
            {
                session.Add("account", LoginInfo.account);
                return Ok("Success");
            }
            else
            {
                return Ok("Faile");
            }

        }
    }

後來發現問題出在Content-Type 上
把它改為application/x-www-form-urlencoded 就可以了
不過這算是一種暫時解決的方式
還是想請問一下各位大大 實務上在開發的時候
都會怎麼去做發送/接收呢?

1個讚

post回去的類型,就看你要送怎樣的資料型態到 api.
如果真的很懶的話,可以自行擴充 http 的功能,讓 post 時自動加上 header 的部分,這樣就可以不用每次都指定header

可以參考這篇的作法

1個讚

謝謝 Kevin的回覆。
另外我想請問一下就是說 因為我發現他的用法會需要用到RxJS的方式來去撰寫
有看到網路上有說,不少人在使用時會採用jQuery Ajax 來搭配
想問問實務上大家會這樣做嗎? 還是一樣http 搭配Rx去實作

內建的Http會傳回 Observable,我是很習慣 RxJS 的寫法了,所以我就不會去使用 jQuery,
如果沒有使用需要jQuery的套件,連 jquery 也不會安裝了。但這是我自己的選擇

1個讚