Ich beginne mit Web-API (Ich war weg von Web-Dev für eine Weile und es scheint niemand kümmert sich um SOAP mehr), aber ich lief in Schwierigkeiten während versuchen zu PUT.PUT in Web-API wird immer "0" auf Server
Ich folgte einem Online-Tutorial und es funktioniert gut für GET und DELETE. Zum Testen verwende ich Postman, da dieser von einem anderen Dienst aufgerufen wird, der auch mit Postman getestet wird. Hier ist der Code für GET:
alle Bücher Get:
// GET: api/Books
public IEnumerable<Book> Get()
{
return Library.Books;
}
Buch von ID-Adresse:
// GET: api/Books/<int>
public IHttpActionResult Get(int id)
{
Book book = Library.Books.FirstOrDefault(l => l.ID == id);
if (book != null)
return ResponseMessage(Request.CreateResponse<Book>(HttpStatusCode.OK, book));
else
return ResponseMessage(Request.CreateResponse<string>(HttpStatusCode.NotFound, "Book not found."));
}
Buch Löschen von ID:
// DELETE: api/Books/<int>
public IHttpActionResult Delete(int id)
{
Book book = Library.Books.FirstOrDefault(l => l.ID == id);
if (book != null)
{
Library.Books.Remove(book);
return ResponseMessage(Request.CreateResponse(HttpStatusCode.OK));
}
else
return ResponseMessage(Request.CreateResponse<string>(HttpStatusCode.NotFound, "Book not found."));
}
von allen gut laufen und werde meinen Zwecken dienen, da ich eine Liste von Objekten zurückgeben muss, also ist alles in Ordnung.
BTW, http://localhost/api/Books/1
funktioniert ziemlich gut, wenn GET oder DELETE gewählt ist (Ich brauche nicht wirklich in Postbote Innenleben bekommen jetzt)
Aber ich habe die PUT-Methode geändert, wie ich nur senden müssen einige Int (eine Adresse) zu diesem Dienst. Hier ist der Testcode:
// PUT: api/Books/<int>
public IHttpActionResult Put([FromBody]int address)
{
if (address == 0)
return ResponseMessage(Request.CreateResponse<string>(HttpStatusCode.BadRequest, "Value cannot be zero"));
else
return ResponseMessage(Request.CreateResponse(HttpStatusCode.OK));
}
Beim Debuggen der Parameter „Adresse“ Null immer wenn sie als solche genannt werden: http://localhost/api/Books/80
oder andere int. Mit anderen Worten, meine Antwort auf PUT wird immer lauten: "Wert kann nicht Null sein". Ich habe versucht, [FromBody]
zu entfernen und das [HttpPut]
-Attribut der PUT-Methode hinzuzufügen, aber es macht die Dinge nur noch schlimmer. Ich weiß, dass das ziemlich neu ist, aber wie ich schon sagte, ich habe mich seit Ewigkeiten nicht mehr mit Web Dev beschäftigt. Bitte um Rat.
So funktioniert PUT nicht. Sie PUT eine teilweise oder gesamte Ressource aktualisiert werden, so '{" Hausnummer ":" 42 "}. Wie Sie aus dem Attribut sehen können, wird die Ganzzahl vom Körper gelesen. In diesem Fall sollte Ihr Anfragetext genau das sein: eine Ganzzahl namens address, also '{address: 42}'. – CodeCaster