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:

Lien 1

Lien 2

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.

0
gram95 2 août 2017 à 12:04

2 réponses

Meilleure réponse

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.

0
Gurwinder Singh 2 août 2017 à 09:59

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

0
Muralikrishna 2 août 2017 à 10:03