想請教各位大大
因最近在學習Angular有些API串接問題想請教
目前是以ASP.NET Web API與Angular做資料串接
網上看了許多API教學都提到說GET是取得資料
而POST是新增資料
但如果要在GET的時候取得特定資料就表示要在url上面將所有參數帶入嗎?
[RoutePrefix("api/member")]
public class MemberController : ApiController
{
[HttpGet, HttpPost]
//加入可跨站請求資料網域
[EnableCors(origins: "http://localhost:8100", headers: "*", methods: "*")]
[Route("infor")]
//[FromBody] Model.MemberIn oData將前端傳遞過來的Json寫入Model
public IEnumerable<Model.MemberInfor> Get([FromBody] Model.MemberIn oData)
{
var repository = new Repository.MemberInofr();
var result = repository.GetMemberInfor(oData.AccountID);
return result;
}
}
目前的寫法如上
是用前端POST過來的JSON資料寫在Header裡面
再讀出所需要的資料傳回到前端
想請問這樣用POST的方式做資料讀取會有什麼問題嗎?
為何都要以GET做資料讀取?
有大大可以幫忙解惑一下嗎
GET是取得資料 而POST是新增資料
其實也不是說哪個狀況,就"一定"要用GET或POST(還有PUT、DELETE、PATCH...)
就只是送參數跟接參數的方式不同
還有POST是放在header會比較不會被直接看到
而且網址比較美觀XDD
想請問這樣用POST的方式做資料讀取會有什麼問題嗎?
只要接得到值,回傳格式也對就沒問題
為何都要以GET做資料讀取?
可以說是慣例吧
在把你寫的API給別人介接的時候
指定請求方式(GET、POST、DELETE...)也能夠讓對方比較容易理解這個API在做甚麼,增加可讀性
所以即便是自己寫自己用
也建議照規矩來
養成好習慣沒有壞處
我的API一律都是POST,
而且還要經過驗證,
就只是為了安全而已.
主要也是希望資料在傳遞上是安全的
想問一下大大在驗證方面是怎麼做
目前的想法是在接API資料前由系統給一個Token當作金鑰
確保前端傳來的Token是可以讀取資料的
要考慮到安全性問題
的確是盡量都用POST比較好
要了解怎麼做API
建議直接去看別人怎麼做的最快
以Microsoft Graph API為例:
Retry-After: [等待秒數]
,告訴使用者過一段時間後再提出Request,在這期間,任何請求都不處理另外,Token在驗證時不要透過DB
用驗算的
不然那個Lodding很恐怖