具有相同路线的OData动作和功能

时间:2017-10-17 19:28:55

标签: asp.net asp.net-web-api odata

我注册了一个函数如下:

individualType.Function(nameof(IndividualsController.Photo)).Returns<byte[]();

功能定义是:

/// <summary>
/// Returns a photo for the specified individual.
/// </summary>
[HttpGet]
[AllowAnonymous]
public IHttpActionResult Photo([FromODataUri] int key, [FromUri] string size = "M", [FromUri] string shape = "S")

我们已经有了上传照片的请求。要做到这一点的理想方法是发布到同一个端点。

当我按如下方式注册操作时,两个端点都不起作用。

var action = individualType.Action(nameof(IndividualsController.Photo));
action.Parameter<string>("hexEncodedPhoto");
action.Returns<UploadIndividualPhotoResult>();

当我将其更改为此时,两者都起作用,但在不同的端点处是不合需要的。

var action = individualType.Action(nameof(IndividualsController.UploadPhoto));
action.Parameter<string>("hexEncodedPhoto");
action.Returns<UploadIndividualPhotoResult>();

此方法的签名目前是:

[HttpPost]
[Auth(AccessRight = SecurityType.PeopleEdit)]
public async Task<IHttpActionResult> UploadPhoto([FromODataUri] int key, ODataActionParameters parameters)

是否可以在OData中的同一路线上同时具有功能(GET)和动作(POST)?

1 个答案:

答案 0 :(得分:0)

从OData规范的角度来看,同一名称空间下的每个元素都应该具有唯一的名称。所以,我认为你的要求是合理的。

如果不对,请告诉我。