Dari template untuk Web API 2, metode posting selalu seperti ini:
[ResponseType(typeof(MyDTO))]
public IHttpActionResult PostmyObject(MyDTO myObject)
{
...
return CreatedAtRoute("DefaultApi", new { id = myObject.Id }, myObject);
}
Saya tidak mengerti CreatedAtRoute()
metode ini . Adakah yang bisa menjelaskan CreatedAtRoute()
metode ini kepada saya?
c#
asp.net
asp.net-web-api
asp.net-web-api-routing
bela diri
sumber
sumber
Jawaban:
The
CreatedAtRoute
Metode ini dimaksudkan untuk mengembalikan URI untuk sumber daya baru dibuat ketika Anda memanggil metode POST untuk menyimpan beberapa objek baru. Jadi, jika Anda POST item pesanan misalnya, Anda mungkin mengembalikan rute seperti 'api / order / 11' (11 menjadi id pesanan jelas).BTW Saya setuju bahwa artikel MSDN tidak ada gunanya memahami hal ini. Rute yang Anda kembalikan sebenarnya akan tergantung pada pengaturan perutean Anda.
sumber
[Route("[controller]")]
pada pengontrol, apa yang harus saya kembalikan (sehingga tindakan GET yang berdekatan dapat dipanggil dengan URL, misalnya)?Saat Anda menggunakan CreatedAtRoute, argumen pertama adalah nama metode Get to the resource. Trik yang tidak begitu jelas adalah bahwa, bahkan dengan nama metode yang ditentukan, Anda harus menggunakan param Nama pada atribut HttpGet agar dapat berfungsi.
Jadi jika pengembalian dalam Posting Anda adalah ini:
Maka atribut Get method Anda akan terlihat seperti ini bahkan jika metode Anda bernama Get:
Panggilan ke metode Posting Anda tidak hanya akan mengembalikan objek baru (biasanya sebagai JSON), itu akan mengatur header Lokasi pada respons terhadap URI yang akan mendapatkan sumber daya itu.
sumber
Di .net core WebAPI, Anda menggunakan metode ini untuk mengembalikan kode 201, yang berarti bahwa objek itu dibuat.
Seperti yang Anda lihat di atas, CreatedAtRoute dapat menerima 3 parameter:
routeName Adalah nama yang harus Anda masukkan pada metode yang akan menjadi URI yang akan mendapatkan sumber daya itu setelah dibuat.
routeValues Ini adalah objek yang berisi nilai-nilai yang akan diteruskan ke metode GET pada rute bernama. Ini akan digunakan untuk mengembalikan objek yang dibuat
konten Itu objek yang telah dibuat.
Contoh di atas menunjukkan implementasi dua metode pengontrol sederhana dengan metode GET sederhana dengan nama berikat dan metode POST yang membuat objek baru.
PENTING
Perhatikan bahwa parameter pertama di CreatedAtRoute (routeName), harus sama dengan definisi Name at the Get method.
Objek pada parameter kedua harus memiliki bidang yang diperlukan yang Anda gunakan untuk mengambil sumber daya pada metode Get, Anda dapat mengatakan bahwa itu adalah subset dari objek yang dibuat sendiri.
Parameter terakhir adalah objek perusahaan yang diterima dalam permintaan tubuh dalam bentuk lengkapnya.
AKHIRNYA
Sebagai hasil akhir, ketika Post untuk membuat perusahaan baru dibuat ke API ini, Anda akan mengembalikan rute seperti 'api / company / {id}' yang akan mengembalikan kepada Anda sumber daya yang baru dibuat
sumber