私はWeb APIを使い始めています(Web Devから離れていましたが、これ以上誰もSOAPを気にしていないようです)。 PUTしようとしている。Web APIのPUTは常に "0"をサーバに入れます
私はオンラインチュートリアルに続き、GETとDELETEでうまく動作します。テストするために、私はPostmanを使用しています。これは、Postmanでテストされている別のサービスから呼び出されるためです。ここでGETのためのコードは次のとおりです。
は、すべての書籍を取得します。
// GET: api/Books
public IEnumerable<Book> Get()
{
return Library.Books;
}
はIDで書籍を購入:
// 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."));
}
は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."));
}
それらのすべてが正常に動作しますオブジェクトのリストを返さなければならないので、私の目的に役立ちます。 GETやDELETEを選択したときにはかなりうまく機能http://localhost/api/Books/1
ところで
、(私は本当に今郵便配達員の内部の仕組みに取得する必要はありません)
しかし、私は唯一の送信する必要があるように私は、PUTメソッドを変更しましたこのサービスへのint(アドレス)。ここではテストコードがあります:デバッグ中などと呼ばれる場合
// 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));
}
、パラメータ「アドレス」は常にゼロになります:http://localhost/api/Books/80
、またはその他のint。換言すれば、PUTに対する私の応答は常に「値はゼロにはできません」となります。 [FromBody]
を削除して、[HttpPut]
属性をPUTメソッドに追加しようとしましたが、状況が悪化するだけです。私はそれがかなり新人だと知っていますが、私が言ったように、私は年齢のWeb開発者に対処していません。ご意見をお聞かせください。
これはPUTの仕組みではありません。 '{" Housenumber ":" 42 "}'のように更新するリソースの一部または全部をPUTします。この属性からわかるように、整数は本文から読み込まれます。その場合、リクエスト本体はちょうどそれでなければなりません:addressという名前の整数、 '{address:42}'です。 – CodeCaster