Получение информации из базы данных в мобильном приложении

108
22 ноября 2020, 17:10

Всем привет! Я разработала веб-приложение на asp.net core 2 mvc, пока только на локалке, связала его с базой данных на sql при помощи entity framework, теперь, мне нужно разработать мобильное приложение, наверное буду делать его на Xamarin, и у меня вопрос, каким образом сделать так, что бы мое мобильное приложение получало данные из базы данных веб-приложения. Насколько я понимаю, нужно разработать API, можно ли его сделать в проекте веб-приложения, не переделывая методы получения данных в контроллерах, или все придется переделывать? И как лучше вообще решить мою проблему? Всем спасибо)))

Answer 1

Приложение asp.net core mvc отдаёт данные прямо в браузер в формате html. Для мобильных приложений нужен вывод ваших данных в формате json.

Можете создать дополнительно к каждому контроллеру по такому же контроллеру, который отдаёт/принимает данные в формате json.

Посмотрите пустой проект Webapi который идёт вместе со студией, какой там приведён контроллер ValuesController. Ничего сверхественного - даже в чём-то проще, выдаёте данные в типах c# их на лету превратит в json:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        [Authorize]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }
        // GET api/values/5
        [HttpGet("{id}")]
        public ActionResult<string> Get(int id)
        {
            return "value";
        }
        // POST api/values
        [HttpPost]
        public ActionResult<string> Post([FromBody] string value)
        {
            return $"value={value}.";
        }
        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody] string value)
        {
        }
        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
        [Authorize]
        [Route("getlogin")]
        public IActionResult GetLogin()
        {
            return Ok($"Ваш логин: {User.Identity.Name}");
        }
        [Authorize(Roles = "admin")]
        [Route("getrole")]
        public IActionResult GetRole()
        {
            return Ok("Ваша роль: администратор");
        }
    }
}

Во-вторых, решите вопрос как ваше приложение будет авторизовываться на веб-апи, обычно для этого подходят jwt токен и хорошая входная точка - вот тут и вот тут, с этого многие начинали.

Я часто делаю приложения, которые одновременно являются и веб-сайтами и отдают данные по api (просто складываю api контроллеры в отдельную area).

READ ALSO
Как сохранять отдельно каждый файл при изменении файла (событие OnChange)

Как сохранять отдельно каждый файл при изменении файла (событие OnChange)

Имеется метод OnChange который реагирует на изменение файла, проблема в том что при изменении программа сохраняет текущее изменение и всё, то есть...

117
Как получить список видео на ютуб-канале

Как получить список видео на ютуб-канале

Я хочу получить список всех видео на определённом канале youtube, как это можно сделать на c#?

126
Не понимаю пример Шилдта про фабрику класса

Не понимаю пример Шилдта про фабрику класса

недавно начал изучать С#До этого с языками программирования дела не имел

108
Вопрос теоретический про объектный тип Object

Вопрос теоретический про объектный тип Object

Понятно, что есть тип ObjectИ этот тип включает в себя такие методы

98