diff --git a/src/DigitalData.Swagger.MockAPI/Controllers/MockController.cs b/src/DigitalData.Swagger.MockAPI/Controllers/MockController.cs index 8b79bca..7a1f3c6 100644 --- a/src/DigitalData.Swagger.MockAPI/Controllers/MockController.cs +++ b/src/DigitalData.Swagger.MockAPI/Controllers/MockController.cs @@ -6,7 +6,7 @@ namespace DigitalData.Swagger.MockAPI.Controllers public class MockController : ControllerBase { [HttpPost("{servicetierName}/ODataV4/{webserviceName}_CreateInvoice")] - public IActionResult CreateInvoice([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company) + public IActionResult CreateInvoice([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company, Dictionary? body) { return Created($"{servicetierName}/ODataV4/{webserviceName}?id={1}", new { Id = 1, Foo = 1}); } diff --git a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs index dc3cceb..ef50575 100644 --- a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs +++ b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs @@ -14,7 +14,7 @@ public class ProxyController(IOptions originServerParamsOpti private readonly OriginServerParams _origin = originServerParamsOptions.Value; [HttpPost("{servicetierName}/ODataV4/{webserviceName}_CreateInvoice")] - public async Task Redir([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company) + public async Task Redir([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company, [FromBody] Dictionary? body = null) { var req = _origin.Url .AppendPathSegment(servicetierName) @@ -22,7 +22,7 @@ public class ProxyController(IOptions originServerParamsOpti .AppendPathSegment(webserviceName + "_CreateInvoice") .SetQueryParams(new { company }) .WithHeader("X-Forwarded-For", HttpContext.Connection.RemoteIpAddress?.ToString()); - + // Add default headers foreach (var header in _origin.DefaultHeaders) req = req.WithHeader(header.Key, header.Value); @@ -36,7 +36,7 @@ public class ProxyController(IOptions originServerParamsOpti req = req.WithCookie(cookie.Key, cookie.Value); //post request - var res = await req.PostAsync(); + var res = body is null ? await req.PostAsync() : await req.PostJsonAsync(body); // set headers foreach (var (Name, Value) in res.Headers) @@ -46,10 +46,10 @@ public class ProxyController(IOptions originServerParamsOpti foreach (var (Name, Value) in res.Cookies.ToKeyValuePairs()) HttpContext.Response.Cookies.Append(Name, Value.ToString() ?? string.Empty); - var body = res.GetJsonAsync(); + var resBody = res.GetJsonAsync(); - if (body is not null) - return new JsonResult(body) + if (resBody is not null) + return new JsonResult(resBody) { StatusCode = res.StatusCode };