Merhaba arkadaşlar, bugün sizlere .net core web uygulaması üzerinden bir rest apiye get, post işlemlerinin nasıl yapılacağını göstermek istiyorum.
Öncelikle, rest api projesi oluşturuyoruz, sonrasında hemen apiyi yazıyoruz.
[Produces("application/json")]
[Route("api/photos/")]
[ApiController]
public class PhotosApiController : ControllerBase
{
[HttpPost]
[Route("MediaUploud")]
public async Task MediaUploudTask([FromForm] MediaUploudDto model)
{
if (model.File != null)
{
var fileName = (Guid.NewGuid() + "_" + Path.GetFileName(model.File.FileName)).Trim(' ');
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\uplouds\\" + model.FolderName);
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
using (var fileSteam = new FileStream(Path.Combine(filePath, model.File.FileName), FileMode.Create))
{
await model.File.CopyToAsync(fileSteam);
}
MediaUploudForModelDto sendFile = new MediaUploudForModelDto
{
FileName = fileName,
FolderName = model.FolderName
};
return StatusCode(201, fileName);
}
return BadRequest();
}
}
Burada görüldüğü şekilde apimizi oluşturduk. Gelin şimdi, web üzerinden request işlemini gerçekleştirelim.
public async Task ImageUploudForName(IFormFile file, string folderName = null)
{
using (var content = new MultipartFormDataContent())
{
content.Add(new StringContent(folderName), "folderName");
var streamContent = new StreamContent(file.OpenReadStream());
streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(file.ContentType);
streamContent.Headers.ContentLength = file.Length;
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
FileName = file.FileName,
};
content.Add(streamContent);
using (var httpClient = new HttpClient())
{
var response = await httpClient.PostAsync("http://localhost:49377/api/photos/MediaUploud", content);
if ((int)response.StatusCode == 201)
{
ServiceImageUploudForMediaModel fileNameResult = response.Content.ReadAsAsync().Result;
return fileNameResult;
}
return null;
}
}
}
Şimdi de servis üzerinden post işlemini gerçekleştirdik.httpClint.GetAsync yaparak get işlemini gerçekleştirebiliriz. Bir dahaki yazımızda görüşmek üzere hoşçakalın.
Teşekkürler Adnan bey, yalın ve güzel anlatım olmuş.
Really nice post. Thanks