Home > database >  How to pass special character in query string in .Net core API?
How to pass special character in query string in .Net core API?

Time:04-08

Net core application. I have one GET api as below.

        [HttpGet]
        [Route("configId={configId}&quoteId={quoteId}"), EnableQuery()]
        public async Task<IEnumerable<Scenario>> GetScenario(string configId, int quoteId)
        {
            var result = await configScenarioService.GetScenarioAsync(configId, quoteId);
            if (result.IsSuccess)
            {
                return result.scenarioResults;
            }
            return new List<Scenario>();
        }

I am trying to hit from Postman as below.

https://localhost:44362/api/v1/Scenario/configId=JBEL ASS_60_SG_5.2-145_MY21_T102.5_25y&quoteId=236

Unfortunately this is giving 404 error. May be sig is causing the issue. After looking into some documentation tried as below.

1. https://localhost:44362/api/v1/Scenario/configId="  encodeURIComponent(BEL ASS_60_SG_5.2-145_MY21_T102.5_25y)  "&quoteId=236

This dint work for me and still giving 404 error.

Can someone help me to fix this. Any help would be greatly appreciated. Thanks

CodePudding user response:

Try this

[HttpGet]
        [Route, EnableQuery()]
        public async Task<IEnumerable<Scenario>> GetScenario([FromQuery(Name = "configId")]string configId, [FromQuery(Name = "quoteId")]int quoteId)
        {

CodePudding user response:

Then try this:

[ApiController]
[Route("api/v1/[controller]/[action]")]
public class YourController : ControllerBase
{
    //... ctor and your other stuff

    [HttpGet("{employeeNumber}/{quoteId}", Name = "Scenario")]
    [ProducesResponseType(typeof(IEnumerable<Scenario>)]
    public async Task<ActionResult<CrewModel>> GetScenario(string configId, string quoteId)
    {
        
    }
}

CodePudding user response:

since you have sign you have to encode your url, for url encoded is + https://www.w3schools.com/tags/ref_urlencode.asp

..../Scenario?configId=JBEL+ASS_60_SG_5.2-145_MY21_T102.5_25y&quoteId=236

and since you have 404 you have to fix an action route too

[Route("~/api/v1/Scenario")]
 public async Task<IEnumerable<Scenario>> GetScenario([FromQuery] string configId, [FromQuery] int quoteId)
  • Related