0

Я пытаюсь имитировать поведение NuGet.org, который возвращает идентификатор пакета для примера URL, как:WebAPI OData согласование содержания маршрута собственности

http://www.nuget.org/api/v2/Packages(Id='Nuget.Core',Version='2.8.3')/Id

Этот ответ выглядит так:

<d:Id xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    Nuget.Core 
</d:Id> 

Я могу создать аналогичный маршрут OAata WebApi, используя PropertyRoutingConvention и создать метод на моем контроллере:

public IHttpActionResult GetId([FromODataUri] string id, [FromODataUri] string version) 
{ 
    var package = Repository.FindPackage(id, new SemanticVersion(version)); 

    return Ok(package.Id); 
} 

Это действие вызывается, но ответ всегда имеет тип содержимого приложения/JSON:

curl -i -q -H 'Accept: application/atom+xml' http://localhost:9001/api/odata/Packages(Id='Nuget.Core',Version='2.8.3')/Id 

HTTP/1.1 200 OK 
Content-Type: application/json; odata=minimalmetadata; streaming=true; charset=utf-8 
DataServiceVersion: 3.0 

{ 
    "odata.metadata":"http://localhost:9001/api/odata/$metadata#Edm.String","value":"Nuget.Core" 
} 

В дополнении к содержимому согласованию не работает, как я могу включить имя свойства в ответ, чтобы сделать его поведение как работает NuGet.org?

Для ясности, полный код доступен на https://github.com/themotleyfool/NuGet.Lucene

ответ

0

ли вы имеете в виду есть пара ключ-значение в ответ? Почему бы не вернуть Ok (пакет), тогда значение в ответе будет

"ID":"Nuget.Core" 

 Смежные вопросы

  • Нет связанных вопросов^_^