Aspnetcore: Mendukung beberapa [FromRoute], [FromHeader], [FromBody], dll dalam satu objek

Dibuat pada 23 Jan 2018  ·  3Komentar  ·  Sumber: dotnet/aspnetcore

Saya mencoba membuat objek dengan semua data yang relevan dari permintaan yang terikat.

Bayangkan tindakan seperti ini

[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)

Dan modelnya bisa seperti ini

public class PostRequest
{
    [FromRoute]
    public int Id { get; set; }

    [FromHeader]
    public string SomeHeader { get; set; }

    [FromBody]
    public int Foo { get; set; }
    [FromBody]
    public string Bar { get; set; }
    [FromBody]
    public string Baz { get; set; }
}

Sayangnya beberapa [FromBody] tidak diperbolehkan.

Jika diizinkan dan berfungsi seperti yang diharapkan, saya dapat mengimplementasikan pengontrol CRUD generik seperti itu

[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
{
    var command = _mapper.Map<TCommand>(model); // AutoMapper
    await _mediator.Send(command); // MediatR
    // omitted for brevity
    return Created();
}

Jelas itu tidak akan terlihat persis seperti itu.
Idenya adalah untuk menghapus semua logika dari pengontrol yang tidak terkait dengan API/MVC. Jadi yang dilakukan pengontrol hanyalah

  • memvalidasi model
  • ekstrak data yang diinginkan dari permintaan
  • kirim data yang relevan ke penangan
  • kembalikan respons http yang sesuai

Sekarang saya dapat memiliki satu implementasi untuk semua kebutuhan pengontrol CRUD saya - dan ada banyak kegembiraan!

Tidak perlu [FromBody] itu bisa menjadi atribut lain. Seperti [FromBodyPart] , [BindFromBody] atau sesuatu yang sama sekali berbeda.

Apakah itu mungkin?

area-mvc

Komentar yang paling membantu

Terima kasih atas permintaan fitur Anda. Kami akan mempertimbangkan fitur ini selama periode perencanaan rilis berikutnya dan memperbarui status masalah ini sebagaimana mestinya.

Semua 3 komentar

Terima kasih atas permintaan fitur Anda. Kami akan mempertimbangkan fitur ini selama periode perencanaan rilis berikutnya dan memperbarui status masalah ini sebagaimana mestinya.

Saya pikir ini akan menjadi solusi untuk pertanyaan SO saya yang masih belum saya jawab di sini:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property

Terima kasih telah menghubungi kami.
Setelah mengevaluasi ulang permintaan ini, kami memutuskan untuk tidak menyediakan fitur seperti itu karena ini tidak selaras dengan prinsip yang kami coba ikuti dalam kerangka kerja.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat