首页 新闻 搜索 专区 学院

.net core webapi 多参数 post 怎么写?

0
悬赏园豆:5 [已解决问题] 解决于 2020-04-19 11:00

前台的请求都是 post
参数都是以 a=1&b=2&c=3 这种方式传入的。

因为我提供的api的接入方习惯性以淘宝为参照物,如果我这样提供api,他们接入起来会很方便,直接用淘宝开放平台的sdk来修改一下request 类就可以了。

所以这种我后端该用什么api框架来做?

如果 .net core 的webapi的话,post请求好像不支持这么发吧?只能传入一个json。
.net 4.0 的webapi 的话,是可以支持这种方式发post请求的,但是用.net 4.0 web api的话,我的下游服务都没法用.net core 了
所以我该怎么弄比较好呢?
还有,如果用ocelot作为网关中心,来转发服务去下游,网关中心统一鉴权后,还需要把 jwt 下发给下游吗?那样子下游又需要去鉴权,感觉不想这么搞,我想直接下游裸奔,设定仅允许内网某个些IP访问这个项目,如果这样的话,网关不转发JWT过去,一般网关鉴权后的用户信息放在哪里呢?比如把鉴权后的用户信息放在header中吗?一般情况下JWT要不要转发给下游服务的?
先谢谢大神们的回复。

LoveCoder的主页 LoveCoder | 初学一级 | 园豆:7
提问于:2020-04-11 16:11
< >
分享
最佳答案
1

core webapi 把参数设置特性:FromForm。看看是不是你要的效果。

收获园豆:5
会长 | 大侠五级 |园豆:7968 | 2020-04-11 20:36

非常感谢,参数前面加这个特性,的确可以。我还以为没法那么搞了。之前.net 4.0的时候,不需要加这个特性,直接自己会映射,现在不会映射了,我以为不可以了。。。。。让你见笑了。。。

能再回答一下另外一个问题吗?
题中有描述。如下
还有,如果用ocelot作为网关中心,来转发服务去下游,网关中心统一鉴权后,还需要把 jwt 下发给下游吗?那样子下游又需要去鉴权,感觉不想这么搞,我想直接下游裸奔,设定仅允许内网某个些IP访问这个项目,如果这样的话,网关不转发JWT过去,一般网关鉴权后的用户信息放在哪里呢?比如把鉴权后的用户信息放在header中吗?一般情况下JWT要不要转发给下游服务的?
先谢谢大神们的回复。

LoveCoder | 园豆:7 (初学一级) | 2020-04-11 22:19

@LoveCoder: 这问题好高深啊,我一下子回答不上,哈哈,不好意思啊。建议再开一个贴问吧,园子里有很多高人的

会长 | 园豆:7968 (大侠五级) | 2020-04-12 07:55

@会长:
兄弟,我按这个方法写可以,但是,有办法统一让某个控制器的入参全部是 [FromForm] 的特性吗?一个个写比较麻烦

LoveCoder | 园豆:7 (初学一级) | 2020-04-13 08:44

@LoveCoder: 没研究过呀,建议再开个帖子问问博客园的高人

会长 | 园豆:7968 (大侠五级) | 2020-04-13 09:45
其他回答(2)
0

asp.net core web api 轻松支持,这就是最简单的表单提交啊

dudu | 园豆:39028 (高人七级) | 2020-04-11 16:15

不是吧。。。。post请求,.net core 3.1能支持这种方式提交吗?

支持(0) 反对(0) LoveCoder | 园豆:7 (初学一级) | 2020-04-11 16:16

我刚刚明明测试了,.net core 3.1 好像不支持这种方式提交表单啊。后端怎么写?? httppost 不是get,后端代码咋写? 我后端是这样写的。
postman 发请求,你看下图

难道是我姿势不对吗。。。。。

支持(0) 反对(0) LoveCoder | 园豆:7 (初学一级) | 2020-04-11 16:20

大哥,还在吗?确定.net core可以支持吗?是我姿势不对还是,麻烦帮忙看下我的2个截图。一个是我后端的写法,一个是我postman发请求的操作。谢谢

支持(0) 反对(0) LoveCoder | 园豆:7 (初学一级) | 2020-04-11 16:22

@LoveCoder: Action 参数之前要加 [FromBody]

支持(1) 反对(0) dudu | 园豆:39028 (高人七级) | 2020-04-11 16:43

@LoveCoder: 建议提供重现这个问题的示例代码

支持(0) 反对(0) dudu | 园豆:39028 (高人七级) | 2020-04-11 17:49

@dudu: 是加 [FromForm] 这个特性就可以。非常感谢。
能看下第二个问题吗?描述中有,问题如下:
还有,如果用ocelot作为网关中心,来转发服务去下游,网关中心统一鉴权后,还需要把 jwt 下发给下游吗?那样子下游又需要去鉴权,感觉不想这么搞,我想直接下游裸奔,设定仅允许内网某个些IP访问这个项目,如果这样的话,网关不转发JWT过去,一般网关鉴权后的用户信息放在哪里呢?比如把鉴权后的用户信息放在header中吗?一般情况下JWT要不要转发给下游服务的?
先谢谢大神们的回复。

支持(0) 反对(0) LoveCoder | 园豆:7 (初学一级) | 2020-04-11 22:20

@LoveCoder: 我对这个问题没有经验

支持(0) 反对(0) dudu | 园豆:39028 (高人七级) | 2020-04-12 11:50

@LoveCoder: ocelot 支持将认证信息转化成Head,带到下游请求。配置如下:
"AddHeadersToRequest": {
"name": "Claims[name] > value",
"phone": "Claims[phone] > value",
//"introduce": "Claims[introduce] > value",
"userId": "Claims[sub] > value",
"client_id": "Claims[client_id] > value"
},
"AddClaimsToRequest": {
"name": "Claims[name] > value",
"phone": "Claims[phone] > value",
//"introduce": "Claims[introduce] > value",
"userId": "Claims[sub] > value",
"client_id": "Claims[client_id] > value"
}

支持(0) 反对(0) xiaogui340 | 园豆:539 (小虾三级) | 2020-04-14 09:44
0

我的代码和你的差不多 我为什么可以??

Tom.汤 | 园豆:1975 (小虾三级) | 2020-04-16 09:31

这哪是差不多啊。。。。
接受参数的写在 Index() 里面试试?比如 Index(string userId,string username)

支持(0) 反对(0) LoveCoder | 园豆:7 (初学一级) | 2020-04-19 10:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册