[英]How to send a “Put” request with a JSON object to a JSONPlaceHolder REST API in Java
[英]GET,POST,PUT Which should be used for receiving a json object to my rest api and send a json object in response?
我正在使用MVC編寫我的第一個Web API。
我知道,通常執行POST和PUT來定義用於在API后面插入或更新數據庫的HTTP方法。 但是我要做的就是從調用方接收一個JSON對象,進行一些處理,然后返回另一個JSON對象作為響應。 不涉及數據庫。
我已經在API控制器方法中同時使用POST和GET進行了測試,它們都可以正常工作,但實際上我應該使用哪種http方法以獲得最佳實踐?
例如
public IHttpActionResult Get(ApiEquipment equipment)
{
// Convert equipment to a compatible buffer
return Ok(new ConvertToBuffer(equipment));
}
GET
似乎您只想從原始數據(調用方的請求)中以有意義的表示形式(處理后響應)檢索數據。 沒有修改/插入數據,因此應該使用GET
。
如果需要處理JSON對象,我建議您使用“ HTTPPOST”,否則請使用GET
方法。
考慮一下使用HttpPost
方法的示例,因為我處理了JSON對象以從數據庫中獲取一些信息。
[HttpPost]
public IHttpActionResult Masters([FromBody]Download_Config_UserInfo Info)
{
List<TestMaster> testMaster = null;
ResponseValidation objValidation = new ResponseValidation();
try
{
#region Validation
objValidation = base.ValidateRequest(Info);
if (!objValidation.isValid)
return base.JsonErrorResult(this.MasterName, objValidation.ErrorCode, objValidation.ErrorDesc);
#endregion
#region Initialization
this.Initialization();
#endregion
#region Functionality
//testMaster = this.GetTestMaster();
testMaster = this.GetTestDateMaster();
if (testMaster == null)
return base.JsonErrorResult(this.MasterName, "E19", "Data Not Available");
var result = (from a in testMaster
select new object[]
{
a.TestId,
a.TestName
});
#endregion
return base.JsonResult(this.MasterName, this.Fields, result);
}
catch (Exception ex)
{
loggerService.Error(Info.ToJSON(), this.MasterName, ex);
return base.JsonErrorResult(this.MasterName, "E20", "Internal Server Error", ex.Message + "_" + ex.StackTrace);
}
finally
{
testMaster = null; objValidation = null; base.UserMaster = null; base.UserPositionMapping = null;
}
}
#endregion
#region Functionality
[NonAction]
public List<TestMaster> GetTestMaster()
{
List<ADM_Retailer> testMaster = null;
try
{
testMaster = this.GetTest();
if (testMaster == null || (testMaster.Count == 0)) { return null; }
string weekNo = base.GetWeekNumber();
return (from a in testMaster
select new TestMaster
{
TestId = a.ARTR_Id,
TestName = a.ARTR_Name,
}).ToList();
}
finally { }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.