【问题标题】:How to pass three parameters to url address using ASP.NET Core Web API如何使用 ASP.NET Core Web API 将三个参数传递给 url 地址
【发布时间】:2022-02-14 04:30:19
【问题描述】:

现在我有一个我想调用的程序:

CALL Get_Discharge_Station('2022-02-02', 6, 11800);

我想将这三个参数-2022-02-02,6,11800传递给url地址,当我输入不同的日期、站号和站号来获取不同的数据时。

现在我的 API 控制器如下所示:

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);
        }
    }
}

当我访问控制器时,我可以改变什么来传递url地址中的三个参数?`

【问题讨论】:

标签: c# .net-core asp.net-core-webapi


【解决方案1】:

只需修复操作

 [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});";
    .....

并仔细阅读下面所有关于 sql 注入的 cmets。

你的网址应该是

https://.../api/hqdataahs/GetData?date=2022-02-02&num=6&statNum=11800

或改变路线

 [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)

在这种情况下,您的网址应该是

https://.../api/hqdataahs/GetData/2022-02-02/6/11800

【讨论】:

  • 我尝试了你的方法,但是我的路由是[Route("api/hqdataahs")],如何访问API页面?
  • @BenJohnson 只是不要忘记路由应该以 "~/" [Route("~/..
  • 如何成为api/hqdataahs/GetData?date=2022-02-02&num=6&staNum=11800 ?
  • 你能这样改答案吗
  • @BenJohnson 好的,我更新了答案
【解决方案2】:

声明参数

    [HttpGet]
    public JsonResult Get(string dataStr, int noodle, int frumpy)
    {

现在构造调用

  string query = $"CALL Get_Discharge_Station('{dateStr}', {noodle}, {fumpy});"

【讨论】:

  • 之后怎么调用?
  • @BenJohnson 看到哔叽的回答
  • 好的,但我的路线不同
猜你喜欢
  • 2015-04-29
  • 2021-09-25
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多