Hallo zusammen,
bei uns hat sich gerade ein Streit um eine, meiner Meinung nach Glaubensfrage, entfacht:
WebAPI2 , was gebe ich zurück ?
Variante 1 : IHttpactionResult
public IHttpActionResult Post([FromBody] SearchModel model){
try{
return Ok();
}
catch(Exception ex)
{
return InternalServerError(ex);
}
}
oder das richtige Model
public ResultModel Post([FromBody] SearchModel model)
{
try
{
var result = this._client.GetData(model.data);
return result;
}
catch (Exception ex)
{
this.log.Error(ex);
throw;
}
}
Gibt es Vor- und/oder Nachteile (außer evtl. Unit Testing) ?
Danke für eure Meinung
VG
Hallo Ahrimann,
gib das dafür vorgesehene IHttpactionResult zurück. Dies stellt genau das dar, was zurückgeschickt wird, nämlich eine HTTP-Response. Mit Statuscode, Body, etc.
Gibst du eine Ressource zurück wird ebenfalls der Statuscode 200 rauskommen. Spätestens aber bei 201 - Created müsstest du schauen, wie du das machst. Die richtigen Stauscodes sind enorm wichtig bei einer RESTful API.
Auch beim Testen kannst du gegen das Interface selber testen. Und brauchst die Resource nicht unbedingt kennen.
Damit es einheitlich ist und dargestellt wird, was die Methode zurück gibt, würde ich immer das IHttpactionResult verwenden.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Coffeebean hats genau richtig erklärt..
.. und Deine Exceptions solltest Du mit Hilfe eines Action- oder ExceptionFilters loggen und nicht in jeder Methode einzeln.
Dadurch wird Deine Methode auch ein Einzeiler.
[MyCustomLoggingExceptionFilter]
public class MyController
{
public IHttpActionResult Post([FromBody] SearchModel model)
{
return Ok( this._client.GetData(model.data) );
}
}
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo ihr beiden,
danke für eure Antworten
@Abt. Guter Einwand, wird so gemacht 😃