How can I correctly implement a .NET controller method that handle POST request retrieving an URI parameter...
This question already has an answer here:
Is it possible to create a parameter binding on both FromURI and FromBody?
1 answer
I have to develop a REST API that have to handle POST request (taking a payload from the body of my request) and at the same time taking an URI parameter.
Into my controller class I have something like this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[ActionName("protocollo/mail")]
public IHttpActionResult InviaAlProtocollo(XXX)
{
return Ok("TEST");
}
}
My problems are:
As you can see I am using the ActionName annotation to specify the URL path handled by this controller method. How can I specify the URI parameter into this ActionName annotation? (can I?) It have to handle something like this: protocollo/mail/{id}
What input parameter have to be specified for this controller method? One for the ID retrieved from the URI (a string) and an object for the request payload? Or this payload can be retrieved inside the method?
How can I implement this behavior?
c# .net asp.net-mvc asp.net-apicontroller
marked as duplicate by CodeCaster
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 11:24
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
Is it possible to create a parameter binding on both FromURI and FromBody?
1 answer
I have to develop a REST API that have to handle POST request (taking a payload from the body of my request) and at the same time taking an URI parameter.
Into my controller class I have something like this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[ActionName("protocollo/mail")]
public IHttpActionResult InviaAlProtocollo(XXX)
{
return Ok("TEST");
}
}
My problems are:
As you can see I am using the ActionName annotation to specify the URL path handled by this controller method. How can I specify the URI parameter into this ActionName annotation? (can I?) It have to handle something like this: protocollo/mail/{id}
What input parameter have to be specified for this controller method? One for the ID retrieved from the URI (a string) and an object for the request payload? Or this payload can be retrieved inside the method?
How can I implement this behavior?
c# .net asp.net-mvc asp.net-apicontroller
marked as duplicate by CodeCaster
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 11:24
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59
add a comment |
This question already has an answer here:
Is it possible to create a parameter binding on both FromURI and FromBody?
1 answer
I have to develop a REST API that have to handle POST request (taking a payload from the body of my request) and at the same time taking an URI parameter.
Into my controller class I have something like this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[ActionName("protocollo/mail")]
public IHttpActionResult InviaAlProtocollo(XXX)
{
return Ok("TEST");
}
}
My problems are:
As you can see I am using the ActionName annotation to specify the URL path handled by this controller method. How can I specify the URI parameter into this ActionName annotation? (can I?) It have to handle something like this: protocollo/mail/{id}
What input parameter have to be specified for this controller method? One for the ID retrieved from the URI (a string) and an object for the request payload? Or this payload can be retrieved inside the method?
How can I implement this behavior?
c# .net asp.net-mvc asp.net-apicontroller
This question already has an answer here:
Is it possible to create a parameter binding on both FromURI and FromBody?
1 answer
I have to develop a REST API that have to handle POST request (taking a payload from the body of my request) and at the same time taking an URI parameter.
Into my controller class I have something like this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[ActionName("protocollo/mail")]
public IHttpActionResult InviaAlProtocollo(XXX)
{
return Ok("TEST");
}
}
My problems are:
As you can see I am using the ActionName annotation to specify the URL path handled by this controller method. How can I specify the URI parameter into this ActionName annotation? (can I?) It have to handle something like this: protocollo/mail/{id}
What input parameter have to be specified for this controller method? One for the ID retrieved from the URI (a string) and an object for the request payload? Or this payload can be retrieved inside the method?
How can I implement this behavior?
This question already has an answer here:
Is it possible to create a parameter binding on both FromURI and FromBody?
1 answer
c# .net asp.net-mvc asp.net-apicontroller
c# .net asp.net-mvc asp.net-apicontroller
edited Nov 22 '18 at 11:00
CodeCaster
108k17143193
108k17143193
asked Nov 22 '18 at 10:20
AndreaNobiliAndreaNobili
13k55181327
13k55181327
marked as duplicate by CodeCaster
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 11:24
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by CodeCaster
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 22 '18 at 11:24
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59
add a comment |
1
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59
1
1
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59
add a comment |
2 Answers
2
active
oldest
votes
Try this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
add a comment |
You can use the RouteAttribute
to define route mappings where you can use parameter placeholders to get those from the url path.
And you can also get the body of the request if you decorate your parameter which represents the body with the FromBody
attribute:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need theMailProtocollo
url part, how is your route mapping exactly looking now?
– Péter Csajtai
Nov 22 '18 at 11:40
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
add a comment |
Try this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
add a comment |
Try this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
Try this:
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("protocollo/mail/{id}")]
public IHttpActionResult InviaAlProtocollo([FromUri] string id, [FromBody] string context)
{
return Ok("TEST");
}
}
answered Nov 22 '18 at 10:53
Bojan DelićBojan Delić
185
185
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
add a comment |
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
– AndreaNobili
Nov 22 '18 at 11:08
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
Check this: docs.microsoft.com/en-us/aspnet/web-api/overview/… (at bottom of page)
– Bojan Delić
Nov 22 '18 at 11:44
add a comment |
You can use the RouteAttribute
to define route mappings where you can use parameter placeholders to get those from the url path.
And you can also get the body of the request if you decorate your parameter which represents the body with the FromBody
attribute:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need theMailProtocollo
url part, how is your route mapping exactly looking now?
– Péter Csajtai
Nov 22 '18 at 11:40
add a comment |
You can use the RouteAttribute
to define route mappings where you can use parameter placeholders to get those from the url path.
And you can also get the body of the request if you decorate your parameter which represents the body with the FromBody
attribute:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need theMailProtocollo
url part, how is your route mapping exactly looking now?
– Péter Csajtai
Nov 22 '18 at 11:40
add a comment |
You can use the RouteAttribute
to define route mappings where you can use parameter placeholders to get those from the url path.
And you can also get the body of the request if you decorate your parameter which represents the body with the FromBody
attribute:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}
You can use the RouteAttribute
to define route mappings where you can use parameter placeholders to get those from the url path.
And you can also get the body of the request if you decorate your parameter which represents the body with the FromBody
attribute:
[RoutePrefix("protocollo")]
public class MailProtocolloController : ApiController
{
[SharePointContextWebAPIFilter]
[HttpPost]
[Route("mail/{id}")]
public IHttpActionResult InviaAlProtocollo(string id, [FromBody]string body)
{
return Ok("TEST");
}
}
answered Nov 22 '18 at 10:58
Péter CsajtaiPéter Csajtai
63617
63617
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need theMailProtocollo
url part, how is your route mapping exactly looking now?
– Péter Csajtai
Nov 22 '18 at 11:40
add a comment |
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need theMailProtocollo
url part, how is your route mapping exactly looking now?
– Péter Csajtai
Nov 22 '18 at 11:40
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
calling my API I am obtaining this error: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable
– AndreaNobili
Nov 22 '18 at 11:09
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
How do you calling the API? Could you send an example, because there could be a lot reasons why are you getting this response.
– Péter Csajtai
Nov 22 '18 at 11:13
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
I am calling on an URL like this (the ? param are mandatory in my application): andrea-myapp.azurewebsites.net/api/MailProtocollo//protocollo/…
– AndreaNobili
Nov 22 '18 at 11:27
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need the MailProtocollo
url part, how is your route mapping exactly looking now?– Péter Csajtai
Nov 22 '18 at 11:40
api/MailProtocollo/protocollo/mail/xxx
is this a valid route? I assume that you don't need the MailProtocollo
url part, how is your route mapping exactly looking now?– Péter Csajtai
Nov 22 '18 at 11:40
add a comment |
1
"I am pretty new in .NET" - you used that same excuse in 2014 already, so that doesn't fly. Read How to Ask and show what you have tried. Plenty of duplicate questions exist.
– CodeCaster
Nov 22 '18 at 10:59