目前在做.net开发。
需要开发一套webapi.
这里记录一下某些注意点。
1. 如何开启跨域
如果webapi的用户是域外用户,则需要根据需要开放跨域。
首先安装Install-Package Microsoft.AspNet.WebApi.Cors
在WebApiConfig.cs里开启config.EnableCors();
可以控制开放的范围,例如只开放某些controller,还是全局都开发等到。
参考:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
2.接收json
webapi一般接收Json。这个不困难,送给某些需要的人。
$.ajax({ url: "*****/Account/Login", type: "POST", data: JSON.stringify({UserName:'user1',Password:'123456'}), contentType: "application/json; charset=utf-8", dataType: "json", error: function (response) { console.log(response.responseText); }, success: function (response) { console.log(response); } });
参考http://stackoverflow.com/questions/21578814/how-to-receive-json-in-a-mvc-5-action-method-as-a-paramter
3. 上传文件
webapi的文件上传和mvc不一样。
具体方式自己选择,可以参考
http://weblog.west-wind.com/posts/2012/Sep/11/Passing-multiple-simple-POST-Values-to-ASPNET-Web-API
和
http://blogs.msdn.com/b/codefx/archive/2012/02/23/more-about-rest-file-upload-download-service-with-asp-net-web-api-and-windows-phone-background-file-transfer.aspx
提醒一点,文件在controller里面必须使用[FromUri]属性,否则报错:
No MediaTypeFormatter is available to read an object of type 'HttpPostedFileBase[]' from content with media type 'multipart/form-data'.
如果选择使用js来上传,请参考
http://www.codeproject.com/Articles/806075/File-Upload-using-jQuery-AJAX-in-ASP-NET-Web-API
apicontroller的request没有files这个属性,需要使用HttpContext.Current.Request.Files