ASP.net Core RC2 Web API POST - Lors de l'utilisation de Créer, CreatedAtAction, vs CreatedAtRoute?

Quelles sont les différences fondamentales de ces fonctions? Tout ce que je sais est tous les trois entraîner une 201, qui est approprié pour la réussite d'une requête POST.

Je ne suis que des exemples, je vois en ligne, mais ils n'ont pas vraiment expliquer pourquoi ils font ce qu'ils font.

Nous sommes censés fournir un nom pour notre (1 dossier par id):

[HttpGet("{id}", Name="MyStuff")]
public async Task<IActionResult> GetAsync(int id)
{
     return new ObjectResult(new MyStuff(id));
}

Quel est le but de nommer cette fonction obtenir, outre le fait que c'est "probablement" requis pour le POSTE à la fonction ci-dessous:

[HttpPost]
public async Task<IActionResult> PostAsync([FromBody]MyStuff myStuff)
{
     //actual insertion code left out

     return CreatedAtRoute("MyStuff", new { id = myStuff.Id }, myStuff);
}

Je remarque que CreatedAtRoute dispose également d'une surcharge, qui ne sont pas dans le nom de la route.

Il est également CreatedAtAction qui prend en paramètres similaires. Pourquoi cette variante existe pas?

Il est également Created qui s'attend à une URL et l'objet que nous voulons revenir. Puis-je utiliser cette variante et de fournir un faux URL et retourne l'objet que je veux et de le faire et de plus avec?

Je ne suis pas sûr de savoir pourquoi il y a tellement de variantes juste pour être en mesure de retourner un 201 pour le client. Dans la plupart des cas, tout ce que je veux faire est de retourner à l ' "app-attribué" (le plus probable à partir d'une base de données) id unique ou une version de mon entité qui a un minimum d'informations.

Je pense qu'en fin de compte, 201 réponse "doit" créer un en-tête location qui a l'URL de la nouvelle ressource, qui, je crois, tous les 3 et de leurs surcharges de faire. Pourquoi devrais-je reviens toujours un en-tête location? Mon JavaScript clients, mobile native, et les applications de bureau ne jamais l'utiliser. Si j'émets un HTTP POST, par exemple, pour créer des relevés de facturation et de les envoyer aux utilisateurs, quel serait l'emplacement de l'URL est? (Toutes mes excuses pour ne pas creuser plus profondément dans l'histoire de l'Internet pour trouver une réponse à cela.)

Pourquoi créer des noms pour les actions et les routes? Quelle est la différence entre les noms d'action et de noms de routes?

Je suis confus à ce sujet, j'ai donc eu recours à la restitution de la Ok(), qui renvoie à 200, ce qui est inapproprié pour le POST.