加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – Web API中的OData POST的媒体资源支持

发布时间:2020-12-15 22:42:31 所属栏目:asp.Net 来源:网络整理
导读:我想创建oData控制器来上传文件 FileDto FileId NameWithExtension(Type:String) 元数据(类型:列表) 内容(类型:流) ======================= Http请求操作================== ?GET:?/ Files({id}) Content-Type: application/jsonResult: FileDto withou
我想创建oData控制器来上传文件

FileDto

> FileId
> NameWithExtension(Type:String)
>元数据(类型:列表)
>内容(类型:流)

======================= Http请求操作==================

?GET:?/ Files({id})

Content-Type: application/json
Result: FileDto without Content

?GET:?/ Files({id})

Content-Type: application/octet-stream
Result: Stream of the File only

?POST:?/文件

Content-Type: ?
Body: FileDto with Content
Result: FileId

不知道我如何能与OData结合起来.

提前致谢

解决方法

This page解释了如何创建一个oDataController.

1)要将包安装在项目中,请打开控制台管理器并键入以下内容:

Install-Package Microsoft.AspNet.Odata

2)打开您的WebApiConfig.cs,并在Register方法中添加以下代码:

ODataModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<FileDto>("File");            
            config.MapODataServiceRoute(
                routeName: "ODataRoute",routePrefix: null,model: builder.GetEdmModel());

3)创建您的oDataController替换yourDataSourceHere以使用您自己的类:

public class FileController : ODataController
{
    [EnableQuery]
    public IQueryable<FileDto> Get()
    {
        return yourDataSourceHere.Get();
    }

    [EnableQuery]
    public SingleResult<FileDto> Get([FromODataUri] int key)
    {
        IQueryable<FileDto> result = yourDataSourceHere.Get().Where(p => p.Id == key);
        return SingleResult.Create(result);
    }

    public IHttpActionResult Post(FileDto File)
    {
        if (!ModelState.IsValid)
            return BadRequest(ModelState);

        yourDataSourceHere.Add(product);

        return Created(File);
    }
}

OBS:要测试这个解决方案,我改变了FileDto的属性Content.更具体来说,它是类型!从流到字节[].发布内容为Base64字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读