Floating FB popout byReview Results

Aug
7
2013
Articoli // Blog // Guide // MSFT

Creare Web API che supportino operazioni CRUD

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

OrangeDotNet.org

OrangeDotNet Community BLOG's

[Sito WEB] [Blog's]

OrangeDotNet.org BLOG's

OrangeDotNet è uno usergroup tecnologico orientato al mondo Microsoft .NET creato da alcune persone siciliane che lavorano però in tutta italia. Lo scopo fondamentale è quello di veicolare, diffondere e favorire l'interscambio di idee, sia con contenuti online sia con eventi e meeting "live", un gruppo con il quale incontrarsi per parlare di tecnologia informatica e di programmazione.

Visualizza il profilo di Luciano Blancato su LinkedIn

Win Free Tech Books!

#MusicStatus - ADV!

#MusicStatus

 

Scarica #MusicStatus direttamente da Windows Phone Store! è GRATIS!!!

Per maggiori info: http://musicstatus.azurewebsites.net/

 

Presenti su Windows Phone Store - SCARICA L'APP

motoGP 2013 - APP

motoGP - APP

 

Scarica motoGP 2013 direttamente da Windows Phone Store! è GRATIS!!!

 

Presenti su Windows Phone Store - SCARICA L'APP

ADV!

Month List

Live traffic

ADV!

//VISIT