Przekazywanie kolekcji obiektu poprzez Web API

0

Hej.

Nie wiem czy to pytanie sie powtarza czy nie.

Mam problem i utknołem.

Mam Web Api controller w którym chce mieć dwie metody

Get();
Get(id);

 
public class ValuesController : ApiController
    {

        private NORTHWNDEntities _entites = new NORTHWNDEntities();

        //// GET api/values
        //public IEnumerable<Product> Get()
        //{
        //    var getProductsList = _entites.Products.ToList();
        //    return getProductsList;
        //}

        // GET api/values
        //public JsonResult Get()
        //{
        //    var getProductsList = _entites.Products.ToList();

        //    JsonSerializer _serializer = new JsonSerializer();
        //    var serialize = _serializer.Serialize(getProductsList);
        //    return Json(getProductsList);
        //}

        //// GET api/values/5
        //public string Get(int id)
        //{
        //    var getProductsListByID = _entites.Products.ToList().Where(n=>n.ProductID == id);
        //    JsonSerializer _serializer = new JsonSerializer();
        //    var serialize = _serializer.Serialize(getProductsListByID);
        //    return getProductsListByID.ToString();
        //}

    }

Staram się metodą Get() pobrac wszystkie obiektu z tabeli Product.

Czyli pobieram:

 
var getProductsList = _entites.Products.ToList();

Działa fajnie, pobiera wszystkie produkty ( to jest kolekcja Products )

Chciałbym teraz aby ta metoda Get() wpakowała te produkty do obiektu JSON i zeby można było tą kolekcje obiektów pobrać później po stronie przeglądarki ( np poprzez Angulara )

Ogolnie problem jest taki, że.... nie wiem w sumie jak tą liste przekonwertować

 
Error	2	Cannot implicitly convert type 'System.Web.Http.Results.JsonResult<System.Collections.Generic.List<AdamAPI.Models.Product>>' to 'System.Web.Mvc.JsonResult'	\AdamAPI\Controllers\ValuesController.cs	34	20	AdamAPI

Bardzo proszę o pomoc.

0

Z metody WebAPI wystarczy zwrócić kolekcję (List<X>), to czy dane wyjdą jako JSON, XML czy sałatka warzywna zależy od tego jakie będą nagłówki i typ requestu, a nie od implementacji metody.

0

Aha czyli moja metoda Get() wystarczy że zwróci mi List<Products> ?

Nie pakować tego do JSONa?

0

Ok więc mam dwie metody zmodyfikowane:

 
        //GET api/values
        public List<Product> Get()
        {
            var getProductsList = _entites.Products.ToList();
            return getProductsList;
        }

        // GET api/values/5
        public Product Get(int id)
        {
            var getProductsListByID = _entites.Products.ToList().Find(p => p.ProductID == id);
            return getProductsListByID;
        }

Teraz otrzymuje kolejny dziwny problem...

5f31c067fb.png

Co to może być? :(

0

Okej dobra już tego błedu nie ma. Natomiast teraz tak:

Gdy chce wywołać te metody z poziomu przeglądarki
http://localhost:53337/api/values/
http://localhost:53337/api/values/1

Otrzymuje jakiś błąd z serializacją:

The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
 
0

Dobra rozwiązałem problemy.

Wystarczyło do metod Web API dodać:

 
// disable proxy creation
            _entites.Configuration.ProxyCreationEnabled = false;

Aby wyłączyć tworzenie PROXY.

1 użytkowników online, w tym zalogowanych: 0, gości: 1