C #: Utilisation d'Odata avec une entrée de tableau dans l'API
Oct 08 2020
Comment faire fonctionner Odata avec une variable de liste? L'API suivante ne fonctionne pas et génère une erreur.
HttpGet
Erreur: {"type": "https://tools.ietf.org/html/rfc7231#section-6.5.13", "title": "Type de support non pris en charge", "status": 415, "traceId": " 00-b0b48a41f445ac4bbcebba902f8cca95-a714db4f4fd0c146-00 "}
Toutes mes autres API fonctionnent,
"http: // localhost: 4547 / api / properties / GetIdentifierPaged"
Manette:
[HttpGet[("[Action]")]
public ActionResult GetIdentifierPaged(List<string> propertyListRequest, ODataQueryOptions<PropertyDto> queryOptions)
{
propertyListRequest.Add("1110200100"); // fake data
var model = _propertyService.GetByPropertyIdentifierPaged(propertyListRequest).ToODataPageResult(queryOptions);
return Ok(model);
}
Un service:
public IQueryable<PropertyDto> GetByPropertyIdentifierPaged(List<string> identifiers)
{
var identifiersEnumerable = identifiers.AsEnumerable();
var properties = _dataContext.Property
.Include(x => x.PropertyStatus)
Where(x => identifiersEnumerable.Contains(x.PropertyIdentifier))
return properties;
}
Résultat de la page:
public static PageResult<T> ToODataPageResult<T>(this IQueryable<T> query, ODataQueryOptions<T> queryOptions)
{
var settings = new ODataQuerySettings();
settings.EnsureStableOrdering = false;
var countQuery = (IQueryable<T>)queryOptions.ApplyTo(query, settings, AllowedQueryOptions.Skip | AllowedQueryOptions.Top | AllowedQueryOptions.Select | AllowedQueryOptions.OrderBy);
long count = countQuery.Count();
var results = (IQueryable<T>)queryOptions.ApplyTo(query, settings, AllowedQueryOptions.None);
return new PageResult<T>(results, null, count);
}
Réponses
go.. Oct 08 2020 at 12:11
Ce problème indique qu'il y a un problème avec votre demande, mais même si vous êtes venu pour répondre, vous recevrez des erreurs. Vous ne pouvez pas donner une valeur que la session est ouverte en réponse
return new PageResult<T>(**results.ToList()**, null, count);