我有一個奇怪的情況,可能是因為我錯過了一些我沒有意識到或不知道的事情。我正在使用 Angular 創建一個簡單的登錄 UI,并調用在 java 中創建的 Web API。java web API函數如下@RequestMapping(value = "/logon", method = RequestMethod.POST, produces = {"application/json"})@ResponseBodypublic String logon( @RequestParam(value = "userID", required = true) String userID, @RequestParam(value = "password", required = true) String password, HttpServletRequest request)現在,如果我使用 http.post 如下login(username: string, password: string) { return this.http.post(this.url+"/security/logon/", JSON.stringify({ userID: username, password: password }) )然后我在 Google Chrome 瀏覽器中收到以下錯誤:POST http://localhost:8080/logon/ 400 (Required String parameter 'userID' is not present)但是,如果我將代碼更改如下:login(username: string, password: string) { var usrpwd = "userID=" + username + "&password=" + password; return this.http.post(this.url+"/security/logon?"+usrpwd, usrpwd )它完美地工作。我錯過了什么嗎?為什么應該是傳遞的參數的 http.post 的第二個參數似乎不起作用?提前感謝您的任何回復或反饋。
2 回答

千巷貓影
TA貢獻1829條經驗 獲得超7個贊
您正在使用兩個必需參數定義端點 url,并且此類參數必須在 url 中(請在此處查看),因此當您向端點發出請求時,該 url 必須為:
http://localhost:8080/logon?userID=yourUserId&password=yourUserPassword
在第一個實現中,您沒有向 url 添加查詢參數,因此向 url http://localhost:8080/logon/發出請求,因為它沒有所需的參數,您的 web 層返回400 http code,這意味著一個錯誤的請求(因為再次,您的 url 不包含所需的參數)。
添加回答
舉報
0/150
提交
取消