Por ahora tengo un procedimiento que deseo llamar:
CALL Get_Discharge_Station('2022-02-02', 6, 11800); Quiero pasar estos tres parámetros: 2022-02-02,6,11800 a la dirección URL, cuando ingrese una fecha, número y número de estación diferentes para obtener datos diferentes.
Por ahora, mi controlador API se ve así:
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; namespace WebAPI.Controllers { [Route("api/hqdataahs")] [ApiController] public class HQ_data_AHSController : ControllerBase { private readonly IConfiguration _configuration; public HQ_data_AHSController(IConfiguration configuration) { _configuration = configuration; } [HttpGet] public JsonResult Get() { string query = @"CALL Get_Discharge_Station('2022-02-02', 6, 11800);"; DataTable table = new DataTable(); string sqlDataSource = _configuration.GetConnectionString("AppCon"); MySqlDataReader myReader; using (MySqlConnection mycon = new MySqlConnection(sqlDataSource)) { mycon.Open(); using (MySqlCommand myCommand = new MySqlCommand(query, mycon)) { myReader = myCommand.ExecuteReader(); table.Load(myReader); myReader.Close(); mycon.Close(); } } return new JsonResult(table); } } }¿Qué puedo cambiar para pasar tres parámetros en la dirección URL cuando accedo al controlador?
declarar los argumentos
[HttpGet] public JsonResult Get(string dataStr, int noodle, int frumpy) {ahora construye la llamada
string query = $"CALL Get_Discharge_Station('{dateStr}', {noodle}, {fumpy});"solo arregla la acción
[HttpGet("~/api/hqdataahs/GetData")] //or just [HttpGet("GetData")] public JsonResult Get(string date, int num, int statNum) { string query = $"CALL Get_Discharge_Station('{date}', {num}, {statNum});"; .....y lea atentamente todos los comentarios a continuación sobre la inyección de sql.
tu URL debe ser
https://.../api/hqdataahs/GetData?date=2022-02-02&num=6&statNum=11800o cambiar de ruta
[HttpGet("~/api/hqdataahs/GetData/{date}/{num}/{statNum}")] //or just [HttpGet("GetData/{date}/{num}/{statNum}")] [HttpGet("~api/hqdataahs/GetData public JsonResult Get(string date, int num, int statNum)en este caso tu url debería ser
https://.../api/hqdataahs/GetData/2022-02-02/6/11800