Floating FB popout byReview Results

Floating Twitter popout byReview Results

Creare Web API che supportino operazioni CRUD

Posted by on Comments (0)

Dopo il primo articolo su come creare delle WebAPI leggendo i dati da un database SQL SERVER (articolo disponibile qui), e l'articolo di Andrea su come inviare dati alle nostre WebAPI (articolo disponibile qui), vediamo come gestire al 100% i dati delle ns WebAPI; nel dettaglio andremo ad implementare tutte le operazioni disponibili, read, write, update, delete.

In questa guida, andremo a creare delle WebAPI che supportano le operazioni CRUD (acronimo per indicare le operazioni di: Create, Read, Update, Delete).

 

Allora, per prima cosa andiamo a creare un nuovo progetto; quindi in VS andiamo a scegliere NUOVO PROGETTO / VISUAL C# / WEB / ASP.NET MVC 4 WEB APPLICATION. Chiameremo il nostro progetto OrangeDotNet

 

nel passaggio successivo scegliamo WebAPI

a questo punto, nel nostro progetto, andiamo a creare una nuova classe dove aggiungiamo il nostro MODEL (il model deve essere creato sotto la cartella MODEL così come indicato nell'immagine).

Una volta creato il model, procederemo a dichiarare la nostra classe UserCommunity.cs

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace OrangeDotNet.Models
{
    
public class UserCommunity
    {
        
public int Id { getset; }
        
public string Nome { getset; }
        
public string Funzione { getset; }
        
public string Email { getset; }
     }
}

 

una volta aggiunto il model dei nostri dati, procediamo ad aggiungere la nostra Interface (NUOVO ELEMENTO / VISUAL C# / CODE / INTERFACE)

e procediamo a chiamarla IUserCommunity.cs

all'interno andremo a scrivere il seguente codice:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OrangeDotNet.Models
{
    
interface IUserCommunity
    {
        
IEnumerable<UserCommunity> GetAll();
        
UserCommunity Get(int id);
        
UserCommunity Add(UserCommunity item);
        
void Remove(int id);
        
bool Update(UserCommunity item);
    }
}

 

a questo punto, aggiungiamo un'altra classe nella cartella MODEL e la chiamiamo UserCommunityRepository.cs.

All'interno di questa classe, andremo ad implementare l'interfaccia creata in precedenza. Qui di seguito il codice che andremo a scrivere:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace OrangeDotNet.Models
{
    
public class UserCommunityRepository : IUserCommunity
    {
        
private List<UserCommunity> users = new List<UserCommunity>();
        
private int _nextId = 1;

        
public UserCommunityRepository()
        {
            Add(
new UserCommunity { Nome = "Luciano Blancato"
Funzione = 
"Webmaster"
Email = 
"luciano.blancato@orangedotnet.org" 
});
            Add(
new UserCommunity { Nome = "Luciano B."
Funzione = 
"Community Manager"
Email = 
"luciano.blancato@orangedotnet.org" 
});
            Add(
new UserCommunity { Nome = "Luciano"
Funzione = 
"Blog Manager"
Email = 
"luciano.blancato@orangedotnet.org" 
});
            Add(
new UserCommunity { Nome = "Blancato L."
Funzione = 
"Speaker"
Email = 
"luciano.blancato@orangedotnet.org" 
});
            Add(
new UserCommunity { Nome = "Blancato"
Funzione = 
"Dev"
Email = 
"luciano.blancato@orangedotnet.org" 
});
        }

        
public IEnumerable<UserCommunity> GetAll()
        {
            
return users;
        }

        
public UserCommunity Get(int id)
        {
            
return users.Find(p => p.Id == id);
        }

        
public UserCommunity Add(UserCommunity item)
        {
            
if (item == null)
            {
                
throw new ArgumentNullException("item");
            }
            item.Id = _nextId++;
            users.Add(item);
            
return item;
        }

        
public void Remove(int id)
        {
            users.RemoveAll(p => p.Id == id);
        }

        
public bool Update(UserCommunity item)
        {
            
if (item == null)
            {
                
throw new ArgumentNullException("item");
            }
            
int index = users.FindIndex(p => p.Id == item.Id);
            
if (index == -1)
            {
                
return false;
            }
            users.RemoveAt(index);
            users.Add(item);
            
return true;
        }
    }
}

 

fatto questo, andremo ad aggiungere il nostro Controller

che andremo a chiamare UserCommunityController

 

e all'interno andremo ad implementare tutte le funzioni del caso (update, delete, insert)

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using OrangeDotNet.Models;

namespace OrangeDotNet.Controllers
{
    
public class UserCommunityController : ApiController
    {
        
static readonly IUserCommunity repository = new UserCommunityRepository();

        
// GET di tutti i risultato
        
public IEnumerable<UserCommunity> GetAllUserCommunitys()
        {
            
return repository.GetAll();
        }

        
// GET di un risultato per ID
        
public UserCommunity GetUserCommunity(int id)
        {
            
UserCommunity item = repository.Get(id);
            
if (item == null)
            {
                
throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            
return item;
        }

        
// GET di risultati per il campo EMAIL
        
public IEnumerable<UserCommunity> GetUserCommunitysByEmail(string email)
        {
            
return repository.GetAll().Where(
                p => 
string.Equals(p.Email, email, StringComparison.OrdinalIgnoreCase));
        }

        
// AGGIUNTA di DATI
        
public HttpResponseMessage PostUserCommunity(UserCommunity item)
        {
            item = repository.Add(item);
            
var response = Request.CreateResponse<UserCommunity>(HttpStatusCode.Created, item);

            
string uri = Url.Link("DefaultApi"new { id = item.Id });
            response.Headers.Location = 
new Uri(uri);
            
return response;
        }

        
// UPDATE - aggiorna dati
        
public void PutUserCommunity(int id, UserCommunity user)
        {
            user.Id = id;
            
if (!repository.Update(user))
            {
                
throw new HttpResponseException(HttpStatusCode.NotFound);
            }
        }

        
// DELETE - cancella dati
        
public void DeleteUserCommunity(int id)
        {
            
UserCommunity item = repository.Get(id);
            
if (item == null)
            {
                
throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            repository.Remove(id);
        }

    }
}

 

A questo punto, le nostre WebAPI sono pronte per essere utilizzate.

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading