J'ai été chargé de créer un service Web qui reçoit et publie des données. Cependant, je suis très nouveau dans ce domaine, et même après avoir recherché plusieurs exemples et essayé de les suivre, j'ai un peu de mal à comprendre.
Exemples référencés:
Le code qui m'a été donné comme référence pour le modèle et le contrôleur est le suivant:
Modèle
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
namespace Webservice.Models.ApiModels {
public class SecondlyReading {
[Key]
public int Id { get; set; }
[Required]
public int Name { get; set; }
[Required]
public string TimeStamp { get; set; }
[Required]
public string Date { get; set; }
[Required]
}
}
Contrôleur
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
using SmartDBWeb.Data;
using Microsoft.AspNetCore.Authorization;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SmartDBWeb.Models.ApiModels;
using Microsoft.EntityFrameworkCore;
namespace Webservice.Controllers.Api {
[Route("api/[controller]")]
[Authorize]
public class WebserviceController : Controller {
private ApplicationDbContext _context;
public WebserviceController(ApplicationDbContext context) {
_context = context;
}
// GET: api/Webservice
[HttpGet]
public IEnumerable<Webservice> GetSecondlyReadings() {
return _context.Webservice.ToList();
}
// GET api/Webservice/id
[HttpGet("{id}")]
public async Task<IActionResult> GetWebservice(int id) {
var reading = await _context.Webservice.SingleOrDefaultAsync(c => c.Id == id);
if (reading == null) {
return NotFound();
}
return Ok(reading);
}
[HttpPost]
public IActionResult PostWebservice([FromBody]List<Webservice> Readings) {
if (!ModelState.IsValid) {
return BadRequest();
}
foreach (Webservice reading in Readings) {
_context.Webservice.Add(reading);
}
_context.SaveChanges();
return CreatedAtAction("GetWebservice", new { id = Readings[0].Id }, Readings[0]);
}
}
}
Ma principale question est de savoir comment l'utilisation du code ci-dessus fonctionne en général. Ce que j'ai découvert (peut-être pas correct), c'est que le modèle est les données elles-mêmes et que le contrôleur relie le modèle et la vue ensemble.
2 réponses
Modèle: Il s'agit essentiellement d'une structure de table pour la base de données. Ainsi, à chaque fois que vous créez un objet, définissez les valeurs et insérez l'objet dans la base de données. Contrôleur: il est utilisé pour traiter les appels HTTP et pour lier votre logique métier à la vue.
[HttpGet]
Cela correspond à une requête GET vers l'api / Webservice d'URL sans aucun paramètre de requête. Le type de retour des actions est une liste, ce qui signifie que plusieurs objets doivent être renvoyés. Dans votre cas, lorsque le client accède à api / Webservice, tous les objets de votre _context.Webservice sont renvoyés.
[HttpGet ("{id}")]
Cela correspond également à une requête GET, mais cette fois-ci, il nécessite un paramètre de requête. Il s'agit d'une information supplémentaire que votre client fournit pour rendre sa demande plus précise. Par exemple, ils pourraient demander api / Webservice? Id = 1 qui vous demanderait de renvoyer l'objet avec un id de 1.
[HttpPost]
Cela correspond à une demande POST et vous demande d'insérer ou de mettre à jour un objet. [FromBody] dit au processeur de requête de convertir le soi-disant corps de requête en un objet d'un type donné. Le corps de la requête est l'endroit où votre client placera des objets entiers - convertis par exemple. au format JSON - ils veulent soumettre au serveur. Donc, pour le modèle
public class SecondlyReading {
[Key]
public int Id { get; set; }
[Required]
public int Name { get; set; }
[Required]
public string TimeStamp { get; set; }
[Required]
public string Date { get; set; }
}
Cela créera une table de données avec Id comme clé primaire car vous utilisez l'attribut [Key].
private ApplicationDbContext _context;
Ceci est utilisé pour créer un contexte de base de données. Vous avez peut-être également créé les éléments suivants dans la classe ApplicationDbContext
public DbSet<SecondlyReading> WebService{get; set;}
Il créera un DbSet avec le nom WebService.
Dans les API WEB, POST est utilisé pour insérer de nouvelles données. Alors, voici l'API api / service Web dans POST, sera utilisé pour insérer les données. Vous pouvez insérer les données en utilisant n'importe quel CLIENT comme POSTMAN ou ARC. Vous devez définir les données dans le corps de la requête de l'appel HTTP. La réponse de l'API peut être JSON ou XML en fonction de votre sortie.
Je pense qu'il vaut mieux lire les bases pour comprendre comment fonctionne normalement l'API Web Pour l'auto-lecture https://www.asp.net/web-api
De nouvelles questions
c#
C # (prononcé "see sharp") est un langage de programmation multi-paradigme de haut niveau, typé statiquement développé par Microsoft. Le code C # cible généralement la famille d'outils et d'exécutions Microsoft .NET, notamment le .NET Framework, .NET Core et Xamarin. Utilisez cette balise pour les questions sur le code écrit en C # ou en spécification formelle de C #.