Ger Hayden Ответов: 1

Как направить запрос API .NET core к определенному методу контроллера?


Я хотел бы сгруппировать свои действия API в небольшой набор контроллеров, чтобы, например, мой KeyContoller имел запросы get для токена JWT и для открытого ключа API. Документация, которую я читал до сих пор, похоже, не допускает такого уровня детализации и предлагает отдельные контроллеры.

Что я уже пробовал:

На данный момент я могу обойтись, потому что сигнатуры методов разные, но я не доволен этим. Это код контроллера:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace CMDS.Controllers
{
    [Route("CMDS/[controller]")]
    [ApiController]
    public class KeyController : ControllerBase
    {
        [HttpGet]
        public IActionResult GetPublicKey()
        {
            object returnData;
            returnData = "CMDS Public Key";
            return Ok(returnData);
        }
        [HttpGet("{AuthString}")]
        public IActionResult GetJWTToken(string AuthString)
        {
            object returnData;
            returnData = "JWT Token";
            return Ok(returnData);
        }
    }
}


Вот примеры вызовов, попадающих в каждый метод:

для GetPublicKey
Invoke-RestMethod http://localhost:5000/CMDS/Key



для GetJWTToken
Invoke-RestMethod http://localhost:5000/CMDS/Key/"dDSD"

1 Ответов

Рейтинг:
7

Wastedtalent

Я не уверен, что правильно понял, что вам нужно, но вы можете указать сигнатуры метода get, такие как:

[HttpGet("GetPublicKey")]
public IActionResult GetPublicKey()
{
    object returnData;
    returnData = "CMDS Public Key";
    return Ok(returnData);
}
[HttpGet("GetJWTToken/{AuthString}")]
public IActionResult GetJWTToken(string AuthString)
{
    object returnData;
    returnData = "JWT Token";
    return Ok(returnData);
}


Что позволит:

Invoke-RestMethod http://localhost:5000/CMDS/Key/GetPublicKey

Invoke-RestMethod http://localhost:5000/CMDS/Key/GetJWTToken/"dDSD"


Ger Hayden

Я попробую сделать это позже сегодня, когда закончу дневную работу. Это именно то, что я ищу.