• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

难道没有人吐槽Asp.netWebApi的吗

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一个APP新项目为了赶时髦,用上了Asp.net Web API,可能我不是太熟悉,经过我几天潜心研究,web api 确实没啥用,简直属于狗尾续貂之作。

新创建一个api controller,大概方法如下

public IEnumerable<string> Get();
public string Get(int id);
public void Post([FromBody]string value);
public void Put(int id, [FromBody]string value);
public void Delete(int id);

 

这几个方法的返回值显然不能满足要求,比如,当iOS或Andriod端请求删除 ,删除有没有成功,无从知晓,所以必须对返回结果进行包装,类似

public class MyResponse
    {
        public int ErrCode { get; set; }
        public string ErrMsg { get; set; }
        public object Data { get; set; }
    }

 

那么 api controller 方法变成

public MyResponse Get();
public MyResponse Get(int id);
public MyResponse Post([FromBody]string value);
public MyResponse Put(int id, [FromBody]string value);
public MyResponse Delete(int id);

那么问题来了------------------------------------------------

1.在 public MyResponse Get(int id); 方法中,如果Content-Type为 application/xml,那么则会报序列化错误,有没有,不能很方便的返回XML,我的解决方法是:在global里移除XmlFormatter,客户端一律用 application/json请求

public MyResponse Get(int id)
{
            var model = UserRepository.Find(id);
            return new MyResponse()
            {
                Data = model
            };
 }

如果这样的话,为什么不用mvc中的 JsonResult呢?

 

2.我很明白web api设计的初衷,什么语义啊,什么资源啊,但就这么几个方法也严重不够用啊,比如 User中,需求就有注册,登录,修改密码,修改资料,验证用户名唯一性等,一个GET PUT POST DELETE怎么够用,当然我知道还有其他的type,但那些英文单词太生涩,难道告诉终端的朋友这个用 LOCK,那个用 SEARCH? 所以最后我又改了路由,类似

config.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

然后在 action 上打上 HttpPost HttpPut。等等,都这个样了,为什么不用MVC,MVC中action不一样可以打上 get post

 

 

3.以为这就结束了,不,做终端的同事说,你那个带PUT的方法,根本用不了啊。也许,像AppCan这种中间件,也许就只支持GET,POST,在我最后把HttpPut改为 HttpPost后,一切都好了

 

 

再来看所谓的Web Api,这还是Web Api吗? 其实跟MVC里用JsonResult 没啥两样,不知道微软为什么出这么个玩意儿??

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap