Ich fange mit Nancy an, und ich bin in ein frustrierendes Problem geraten.Deserialisierten Körper ohne Bindung
Ich habe ein Modell, das eine ID (neben anderen Eigenschaften) hat.
public class MyModel
{
public string Id { get; set; }
// other properties
}
In meinem Modul, definierte ich eine PUT-Methode
Put["/{id}", true] = async (parameters, token) =>
{
var model = this.Bind<MyModel>();
string id = parameters["id"];
if (model.Id != id)
return new Response
{
ReasonPhrase = $"[error message about IDs not matching]",
StatusCode = HttpStatusCode.BadRequest
};
await _myModelService.Update(model);
return Nancy.Response.NoBody;
};
Die Frage, die ich erlebt habe, ist, dass bei dem this.Bind<MyModel>()
Anruf, Nancy die ID im Körper mit der ID in der Route überschreibt, Das heißt, ich kann mein "unerreichtes" Szenario nicht testen. Zum Beispiel:
PUT /orders/someObjectId
{
"Id" : "aDifferentObjectId"
}
bindet an ein MyModel
mit Id
als "someObjectId"
.
Ich habe versucht, auch die Eigenschaft, eine schwarze Liste:
this.Bind<MyModel>(m => m.Id)
this.Bind<MyModel>("id")
this.Bind<MyModel>("Id")
this.Bind<MyModel>("id", "Id")
Dies führt jedoch in der Bindeoperation die ID-Eigenschaft Clearing im Modell.
Wie bekomme ich genau das, was im Körper ist?