如何解决请求 uri 中的冒号是什么?
在 Micronaut 应用程序中编写了一个端点,如下所示:
@Post("/{someId}:verb")
我想从 POSTMAN 向它发出 POST 请求,但不知道我是怎么做到的?到目前为止,我已经尝试过:
POST http://localhost:8080/1234/verb // 404 (Not Found)
POST http://localhost:8080/1234:verb // this combines ':' with 1234 and that in turn fails that @Pattern validation that I have placed.
POST http://localhost:8080/1234 // 405 (Method Not Allowed)
解决方法
我引用了 Micronaut 文档(我添加的亮点):
请记住,要在占位符表达式中指定默认值,
你应该使用冒号 :
字符,但是如果你是默认的
试图指定有一个冒号,那么你应该用
回勾。
因此,如果未设置 verb
,您可能需要将 someId
替换为默认值。
当您的 POST 请求中提供 someId
时,该方法将使用 someId
。否则,它将使用默认值,根据您的示例为 verb
。因此,如果您正在使用 POSTMAN 进行测试,请设置 id 或将其留空,以测试默认值。
我希望我没有误解您的问题(-->您不是在寻找 someId 的默认值?),但以下代码适用于 cURL(someId
可以是字符串或整数 - 你更喜欢什么):
package com.example;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.PathVariable;
import io.micronaut.http.annotation.Post;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Controller("/")
public class DemoController {
private static final Logger logger = LoggerFactory.getLogger(DemoController.class);
@Post(value = "/{someId}:verb",produces = MediaType.TEXT_PLAIN)
public String postMethod(@PathVariable String someId) {
String message = "You called me with the value: " + someId;
logger.info(message);
return message;
}
}
卷曲:
.\curl.exe -X POST http://localhost:8080/WeLoveCake42:verb
.\curl.exe -X POST http://localhost:8080/12345678:verb
输出:
20:14:42.027 [default-nioEventLoopGroup-1-5] INFO com.example.DemoController - You called me with the value: WeLoveCake42
20:15:37.989 [default-nioEventLoopGroup-1-7] INFO com.example.DemoController - You called me with the value: 12345678
如果我误解了您的问题:
- 我在
defaultValue
上使用@PathVariable
没有运气 - 我没有运气使价值
someId
@Nullable
我猜路由/调度器不够灵活,无法检测到这种模式(也许它甚至可能导致不确定的行为,所以这是可以理解的)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。