web api的几点迷惑
web api的几点疑惑
web api,不论是get,还是post, 客户端请求的参数,这个得定义在方法形参中。
get u?id=xx&name=xx
这样,post时,参数如果放在body就接受不到。
如上接受body内容,但只能有一个
这样太死了呀,请求参数不符合比如少一个,那直接路由就挂掉了呀。
新客户端还好,如果是老的客户端(比如post body普通参数),还要去改动成json格式post,那不现实。
请高手支招!
另:mvc里不要view,作"web api"用,如何做?
------解决思路----------------------
querystring支持多个复杂实体的
http://blog.****.net/starfd/article/details/43530055
如果不带声明时,对于基础数据,WebAPI默认FromUri,对于实体,WebAPI默认FromBody
实体接收时,没数据也是能路由到的,只不过相应字段被设置成了null而已
------解决思路----------------------
如果不希望所有值都必须传入,那么你可以用可选参数
比如你的例子
这时候你只要传入id就可以,name不传的话就是 张三
------解决思路----------------------
参数可以用实体类,属性名和表单name属性一样就可以拿到
------解决思路----------------------
客户端post的不是json,api的参数里才好用实体类啊
web api,不论是get,还是post, 客户端请求的参数,这个得定义在方法形参中。
get u?id=xx&name=xx
public string Get(int id,string name)
这样,post时,参数如果放在body就接受不到。
[HttpPost]
public string Post([FromBody]user json)
如上接受body内容,但只能有一个
这样太死了呀,请求参数不符合比如少一个,那直接路由就挂掉了呀。
新客户端还好,如果是老的客户端(比如post body普通参数),还要去改动成json格式post,那不现实。
请高手支招!
另:mvc里不要view,作"web api"用,如何做?
------解决思路----------------------
querystring支持多个复杂实体的
http://blog.****.net/starfd/article/details/43530055
如果不带声明时,对于基础数据,WebAPI默认FromUri,对于实体,WebAPI默认FromBody
实体接收时,没数据也是能路由到的,只不过相应字段被设置成了null而已
------解决思路----------------------
如果不希望所有值都必须传入,那么你可以用可选参数
比如你的例子
public string Get(int id,string name="张三")
这时候你只要传入id就可以,name不传的话就是 张三
------解决思路----------------------
参数可以用实体类,属性名和表单name属性一样就可以拿到
------解决思路----------------------
客户端post的不是json,api的参数里才好用实体类啊