I’ve built different get methods using body request to select an id (with raw json). However, as I learned that get methods doesn’t support body request, I would like to change so that I can use params in postman insted. However, when I do it now, I get an 415 Unsupported Media Type.
Here’s the method:
public async Task<IEnumerable<RentReason>> getRentReason(RentReason model) { var parameters = new DynamicParameters(); parameters.Add("@rentId", model.rentreasonId); var getAllRentReason = await _sqlconnection.QueryAsync<RentReason>($@"SELECT CostItem.ID as rentreasonId, CostItem.CostItemTypeID as claimReason, RequestRentServiceReason.Name as rentReason, RequestRentServiceCartype.Name as RentServiceCarTypeID, DateFrom, DateTo, Price as totalPrice FROM CostItem INNER JOIN RequestRentServiceReason ON CostItem.RentReasonID = RequestRentServiceReason.ID INNER JOIN RequestRentServiceCartype ON CostItem.RentServiceCartypeID = RequestRentServiceCartype.ID WHERE CostItem.ID = @rentId", parameters); return getAllRentReason; }
Controller:
[HttpGet] public async Task<IActionResult> getRentReason(RentReason model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { var list = await _request.getRentReason(model); return Ok(list); } catch (Exception ex) { return BadRequest(ex.Message); } return Ok(); }
Interface class:
Task<IEnumerable<RentReason>> getRentReason(RentReason model);
Before I sent requests in the body like:
{ "rentreasonId": "40" }
But I would like to send it in the params insted so for example:
https://localhost/Request/getRentReason?rentreasonId=40
Anyone know how to achive this?
Advertisement
Answer
You can have method parameters bound to query parameters by using the [FromQuery]
Attribute.
In your case, it should look something like this:
public async Task<IActionResult> getRentReason([FromQuery] int rentreasonId)
which will enable you to use <your controller path>/rentReason?rentreasonId=40
However, I’d recommend to use route parameters for this:
[HttpGet("/your/api/route/rentreason/{rentreasonId}")] public async Task<IActionResult> getRentReason([FromRoute] int rentreasonId)
Which will get you something like <authority>/your/api/route/rentreason/40
.
For reference: FromRouteAttribute