在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文档(我添加的突出显示(:
请记住,要在占位符表达式中指定默认值,您应该使用冒号
:
字符,但是如果您是如果尝试指定有冒号,则应使用转义该值背后的滴答声。
因此,如果未设置someId
,则可能需要将verb
替换为默认值。
当在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:
.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
万一我误解了你的问题:
- 我在
@PathVariable
上使用defaultValue
时运气不佳 - 我没有运气使值
someId
@Nullable
我想路由/调度程序不够灵活,无法检测到这种模式(也许它甚至可能导致非确定性行为,所以这是可以理解的(。