Comment POSTER une valeur de type DateTime à une API Web 2 contrôleur
J'ai un exemple de contrôleur:
[RoutePrefix("api/Example")]
public class ExampleController : ApiController
{
[Route("Foo")]
[HttpGet]
public string Foo([FromUri] string startDate)
{
return "This is working";
}
[Route("Bar")]
[HttpPost]
public string Bar([FromBody] DateTime startDate)
{
return "This is not working";
}
}
Quand je l'envoi d'une requête GET: http://localhost:53456/api/Example/Foo?startDate=2016-01-01
il fonctionne.
Quand je POSTE à http://localhost:53456/api/Example/Bar
je reçois un HTTP/1.1 400 Bad Request
erreur.
C'est mon POST de données:
{
"startDate":"2016-01-01T00:00:00.0000000-00:00"
}
Ce que je fais mal?
Comment êtes-vous ce détachement ? Pouvez-vous partager le code ?
C'est en gros tout le code (voir Igor réponse ci-dessous). J'ai eu de travail
C'est en gros tout le code (voir Igor réponse ci-dessous). J'ai eu de travail
OriginalL'auteur Pierre Nortje | 2016-08-17
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas poster de non-objets directement, vous avez besoin de les envelopper d'un côté un objet conteneur lors de l'utilisation de
FromBody
.De l'autre il pourrait travail est si vous formulaire-encoder la valeur comme ceci en utilisant la
=
symbole (remarque vous l'envoyer comme un non-objet, les accolades ont été supprimés).vous pouvez également essayer le formulaire codé de manière mais, vraiment, la meilleure solution est d'utiliser un objet wrapper (voir mise à jour en bas).
aussi, si vous trouvez une réponse utile, s'il vous plaît ne pas oublier de le marquer comme réponse et/ou de vote en fonction de ce que vous pensez est approprié. Merci!
OriginalL'auteur Igor
Essayez juste de Poster:
En précisant le nom de la propriété voudrait dire votre point de terminaison devraient accepter un objet avec une propriété nommée
startDate
. Dans ce cas, vous ne voulez passer unDateTime
.OriginalL'auteur hvaughan3
Soumis format de la date est importante, et dépend de votre bibliothèque client. Il doit ressembler à ceci (entre guillemets dans le raw du corps de la charge utile):
Pas de broches, pas de noms de propriété. Le format qui est transmise à partir de votre code et/ou de la bibliothèque client va dépendre de ce que vous essayez d'envoyer un javascript date, ou une représentation de chaîne de caractères. Ainsi, d'ajuster les observations code de façon appropriée...
OriginalL'auteur Jim